favorites = {:composer => "Brahms", :painter => "Van Gogh", :comedian => "Groucho"}
1 composer 是什么冬冬? 2 ruby 执行这段代码时,究竟做了什么?
这不是 hash 么
是的,不理解 hash 用法,总觉得好像给对象加了 property
:composer 是对象还是方法,还是别的什么东东?
:composer 是 key,是一个 Symbol,符号。可以理解为一个不变的字符串。
key-value. 键 - 值 字典 json 你用过吗,你看像不像呢?
其实你可以把这样的 k-v pair 当成属性啊,有何不可?别把 OO 的范式搞得太死板了,领会精神。
I think { } is a method .... So they are parameters ...
{ }
只有 method 没有 property 指的是方法调用的时候。你举的这个例子是通过字面量创建一个 Hash 对象,这个时候不涉及到方法还是属性。
字面量
irb(main):003:0> favorites = {:composer => "Brahms", :painter => "Van Gogh", :comedian => "Groucho"} => {:composer=>"Brahms", :painter=>"Van Gogh", :comedian=>"Groucho"} irb(main):004:0> favorites.class => Hash irb(main):005:0> favorites[:composer] => "Brahms" irb(main):006:0> :composer.class => Symbol irb(main):007:0>