🦁
[Bug #20931] パターンマッチの in 式でカッコをつける必要があるチケット
[Bug #20931] Using in
as an expression requires extra parentheses
- パターンマッチの
in
式を使用する時にカッコで囲む必要がるというバグ報告 - 例えば次のコードはシンタックスエラーになります
t = { a: 1, b:1 }
puts(t in {a: 1, c: 1}) # syntax error
- これを回避する場合は以下のようにカッコで囲む必要があります
t = { a: 1, b:1 }
puts((t in {a: 1, c: 1})) # => false
- また次のような代入式は
in
式の結果が代入されるわけではないです
t = { a: 1, b:1 }
r = t in {a: 1, c:1 }
pp r # => {a: 1, b: 1}
- メソッド呼び出しの場合は
puts(a in 1, 2, 3)
がputs((a in 1), 2, 3)
なのかputs((a in 1, 2), 3)
なのかputs((a in 1, 2, 3))
なのかが曖昧なのでカッコをつける必要がある感じですね - 後者は
in
式の優先順位が低いことに起因している感じですかね? -
and
やor
とかと同じような感じで捉えるとよさそうではありますかねー
Discussion