创建包含哈希的数组

Creating an array containing a hash

问题编辑 - 分解第二个示例如何创建哈希。

我不明白为什么下面的第一个示例没有创建哈希,而第二个示例创建了。

a: :b
# => SyntaxError: (irb):1: syntax error, unexpected ':', expecting end-of-input

对比

[a: :b]
# => [{:a => :b}]

当你只有 a: :b 是一个语句并且它是无效的 Ruby 语法时。

当你有[a: :b]时,你实际上是在调用一个方法。您调用的方法是[](a: :b)。当您将 a: :b 作为方法的参数时,Ruby 将其视为散列并将方法 {:a => :b} 作为参数。所以最终结果就是您看到的 [{:a => :b}]