在尝试回答其他成员的问题时,我碰巧遇到了这种奇怪的行为:
puts :some_object => 'another_object'
令人惊讶的是,输出是这样的:
{:some_object=>"another_object"}
这个新恶魔是什么?看起来好像我使用#puts
创建了一个哈希,并且没有使用普通的花括号语法。
我无法测试这个理论,因为这只会产生错误:
puts (:some_object => 'another_object').class
# => syntax error, unexpected =>, expecting ')'
这里发生了什么?
编辑好的,感谢bundacia的解释,我现在很容易测试并确认它是一个哈希(而我之前不知道该怎么做):
def test(x)
puts x.class
end
test(:some_object => 'another_object')
# => Hash
非常感谢!
答案 0 :(得分:3)
你 将哈希值传递给puts
。在ruby中,如果传递给函数的最后一个参数是散列,则花括号是可选的。所以你的例子相当于:
puts( {:some_object => 'another_object'} )