メモ置き場

パターンマッチ

  • 2.7でexperimentalとして導入、3.0で正式化。
obj = {a:1, b:2, c:3}

# case in
case obj
in {a:} # パターンを記載(hash pattern)
  puts "matched #{a}" # variable capture
in {a: String} # クラスの指定

in [a, b, c] # array pattern

else
  # マッチしなかった場合
  # else節を省略した場合はNoMatchingPatternKeyErrorがraiseされる
  puts "not matched"
end

$ ruby pattern.rb
matched 1

参考: https://docs.ruby-lang.org/en/3.0/doc/syntax/pattern_matching_rdoc.html