💎

[ruby] p {hoge: 1} はsyntax error

2021/06/01に公開

雑なコードを書いている中で以下がsyntax errorに

p {hoge: 1}

?????っとなって色々試してみると、p {hoge: 1} 以外はエラーにはならない。

# # syntax error
# p {hoge: 1}

# no error
h = {hoge: 1}
p h

# no error
p ({hoge: 1})

# no error
p Hash.new()

# no error
def a; {hoge: 1}; end
p a

え??っとなったんだけど、よくよく考えると当然。
pが引数にblockを渡されたと解釈されるためですね。
(実は考えても全く分からなかったのでググったらスタックオーバーフローに回答が書いてあった)。

秒で気づきたかったけど、解決するまで1時間以上かかった。。無念。

Discussion