私は、この例のRubyコードfrom a blog entryを理解しようとしています。これは、DEFAULT、:say、:@message "というシンボルを使用して識別子を検索します。しかし、私が知ることから、それは識別子を検索するのではなく、それらの識別子に関連付けられた値です。私は識別子が変数やメソッドなどの名前だと思ったので、識別子は「DEFAULT」「」「メッセージ」となります。プログラムの出力は以下の通りです。このRubyコードは、識別子またはそれに関連付けられた値をルックアップしますか?
また、なぜ識別子を検索する必要がありますか?私は、コードを実行すると
class Demo
# The stuff we'll look up.
DEFAULT = "Hello"
def initialize
@message = DEFAULT
end
def say() @message end
# Use symbols to look up identifiers.
def look_up_with_symbols
[Demo.const_get(:DEFAULT),
method(:say),
instance_variable_get(:@message)]
end
end
dem = Demo.new
puts dem.look_up_with_symbols
私はこの出力を得る:
Hello
#<Method: Demo#say>
Hello