将哈希传递给p会导致语法错误

时间:2013-11-18 15:25:14

标签: ruby syntax-error

为什么我会这样做?

p {a:3}
# => syntax error, unexpected tINTEGER, expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END
# => p {a:3}
           ^

1 个答案:

答案 0 :(得分:4)

Ruby在解析引擎中有一些奇怪之处。一个是某些事情需要围绕它们的括号。

例如,这应该有用。

p({a:3})

或者这个

hash = { a: 3 } 
p hash

正如另一个答案所指出的那样。原因是解释程序处理如下。

# Input
p { a: 3 }

# What the interpreter sees
p do
  a: 3
end

Kernel#p不支持块,因此您必须使用括号。