我注意到 Ruby 1.8.7 中的哈希对象和 Rails 3.0.10 中的哈希对象之间的差异。
例如,在 1.8.7irb
中,我得到:
1.8.7 :001 > {}.try(:method)
NoMethodError: undefned method `try' for {}:Hash
from (irb):1```
但是,从 3.0.10 rails 控制台,我得到:
1.8.7 :003 > {}.try(:method_x)
NoMethodError: undefined method `method_x' for {}:Hash
from (irb):3:in `try'
from (irb):3
这让我感到惊讶,因为我的印象try
是 Object 中定义的,它是 Hash 的祖先,并且try
将返回 nil 而不是抛出 NoMethodError。
我错过了什么?