[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 12699] Re: 議事録「 Java 言語仕様第3版」を読む会(第 3 回)



前橋です。

私も詳しくはないですが。

>スクリプトでは依存する宣言ほ先に書く必要がある
>  --> スクリプトは不便ではないか?
>  --> JavaやC#などでは可能なのに...

Rubyではクラス定義は「実行されます」。だからif文でよけたりとかもできます。
先に書く後に書くの問題ではなくて、使う前に実行されていなければ
なりません。

On 2007 Jun 11 07:12:06 
"TAKAHASHI,Toru" <torutk@xxxxxxxxxxxx> wrote:
> 最初フィールド(インスタンス変数)を定義する方法がわからず、何時間も
> 悩みました。どうやらRubyでは「フィールドは定義しない。メソッドの定義
> で暗黙に(自動的に?)定義される」ということと理解しました。

インスタンスフィールドは、代入により実行時に生成されます。
よって、同じクラスであっても、インスタンスフィールドは
オブジェクトによりあったりなかったりすることがあり得ます。

>>   また、Java版のコードでは package points; を宣言していますが、
>>Rubyには同様な仕組みはあるのでしょうか?
>classより大きな単位は見当たりませんでした。

importと似たような使い方として、ファイルをひとつのモジュールとして
requireすることはできます。

moduleはJavaで言えば「実装が書けるinterface」的な紹介が
されることが多いわけですが、
include(Javaで言えばimprements?)自体が実行される
メソッドなので、小松さんの例だと、小松さんのコードの後に

include Points

p = Point.new
p.x = 10
p.y = 20

print p.x
print p.y

とか書けばPoints内のクラスが使えるわけですけど。

――どうもなんだか気持ちが悪い…

# Ruby初心者の上よっぱらいなので試しもせずに書いてます。
# ツッコミ歓迎。

------------------------------------------------------------
  前橋 和弥                        PXU00211@xxxxxxxxxxx
                                   http://kmaebashi.com
------------------------------------------------------------