问题编辑 - 细分第二个例子如何创建哈希值。
我无法弄清楚为什么下面的第一个例子没有创建哈希,第二个例子没有。
a: :b
# => SyntaxError: (irb):1: syntax error, unexpected ':', expecting end-of-input
VS
[a: :b]
# => [{:a => :b}]
答案 0 :(得分:4)
如果你只是a: :b
这是一个语句而且它是无效的Ruby语法。
当你有[a: :b]
时,你实际上正在调用一个方法。您调用的方法是[](a: :b)
。当您将a: :b
作为方法的参数时,Ruby将其视为哈希,并将方法{:a => :b}
作为其参数。所以最终的结果是你看到的[{:a => :b}]
。