KDOC 709: Rubyのcase/whenはeqqで比べる
この文書のステータス
- 作成
- 2026-10-18 貴島
- レビュー
- 2026-10-18 貴島
概要
Rubyの case / when は、 when の側の === (eqq) で比べる。 === はクラスごとに意味が違う。クラスなら「そのクラスのインスタンスか」、範囲なら「範囲に入っているか」、正規表現なら「マッチするか」になる。そのため when String や when 1..5 や when /\A1/ が書ける。
The patterns are matched using the
===method which is aliased to==on Object. Other classes must override it to give meaningful behavior.Here the string
"12345"is compared with/^1/by calling/^1/ === "12345"which returns true.
[3, "12345", "abc"].each do |x|
kind = case x
when 1..5 then "1..5 の範囲"
when /\A1/ then "1で始まる"
when String then "String"
end
puts "#{x.inspect}: #{kind}"
end
3: 1..5 の範囲
"12345": 1で始まる
"abc": String
関連
なし。