2022/01/29 今回の気になった bugs.ruby のチケット

今週はパターンマッチでインスタンス変数で値を束縛できるようにする話です。

[Feature #18408] Allow pattern match to set instance variables

  • パターンマッチでインスタンス変数への束縛を許容したいチケット
  • 現状はパターンマッチでインスタンス変数に対して値を束縛する事ができない
# これはエラーになる
case {name: "John", age: 42}
in name: /jo/ => @name, age: @age
end

puts [@name, @age] #=> ["John", 42]
  • 上記のようにインスタンス変数でも束縛したいことがチケットの内容になる
  • 元々は右代入でインスタンス変数に代入できないのが起因となっている
# 右代入ではパターンマッチを利用しているので以下のコードはエラーになってしまう
42 => @value
# acceptable
42 => @v 

# not acceptable
case 42
in @v if expr
end
  • 現状も議論は進んでいるみたいだけどまた結論はでていなさそう