2007年10月29日

ローカル変数の件

Rubyをいじってみました。

ローカル変数がわかりませんでした。

class Hoe
attr_accessor :hoehoe

def initialize hoehoe
@hoehoe = hoehoe
end

def echo
p hoehoe
end
end

というコードで、

hoe = Hoe.new 123
hoe.echo -> 123

となるので、メソッドechoでhoehoeはローカル変数のくせに、何の値を出力しているのかしら!?
と不思議に思いました。
インスタンス変数までたどっていって値を出力しているのかしら?
と思ってしまいました。

で、マニュアルを見たら、Ruby言語仕様->実行http://www.ruby-lang.org/ja/man/?cmd=view;name=%BC%C2%B9%D4のところに
また未定義の(つまりコード中に書かれていない)ローカル変数を参照すると、 Ruby は次にそれを self への(引数のない)メソッド呼び出しに解釈しようとします
とありました。
でも@hoehoeはメソッドじゃないのになと思いかけたところ、

attr_accessor :hoehoe

と書いてあるのに気がつきました。
これは

def name
@name
end
def name=(val)
@name = val
end

とメソッドを定義する事になると、「組込クラス->module」の「プライベートメソッド:」にありました。

なるほど。
posted by ほえ at 15:16| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。