🌊
[Bug #20482] 1行パターンマッチで if を使ったときのバグ報告
[Bug #20482] nil variables in a guard clause of a standalone => or in expression
- 次のようなパターンマッチのコードが意図しないエラーになるというバグ報告
[1, 2] in a, b if b == 2*a
x.rb:1:in `*': nil can't be coerced into Integer (TypeError)
[1, 2] in a, b if b == 2*a
^
from x.rb:1:in `<main>'
- 意図としては以下のような
case ~ in
と同等の挙動を期待しています
case [1, 2]
in a, b if b == 2*a # キャプチャした変数を参照しつつ条件を指定できる
true
else
false
end
# => true
- これはいわゆるパターンマッチの if ではなくて後置 if として解釈されるので左辺が評価される前に if 文の条件式が評価されるのでエラーになってしまう感じです
# こう解釈される
([1, 2] in a, b) if b == 2*a
Discussion