- 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