#puts是否创建了新哈希?

时间:2014-01-15 17:06:45

标签: ruby

在尝试回答其他成员的问题时,我碰巧遇到了这种奇怪的行为:

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

非常感谢!

1 个答案:

答案 0 :(得分:3)

将哈希值传递给puts。在ruby中,如果传递给函数的最后一个参数是散列,则花括号是可选的。所以你的例子相当于:

puts( {:some_object => 'another_object'} )