ruby case式
1629 ワード
Rubyのcase文は非常に強力で、まず基本的な使い方を見てみましょう.
grade = case
when point >= 85: 'A'
when point >= 70 && point < 80: 'B'
when point >= 60 && point < 70: 'C'
when point < 60: 'D'
else 'E'
end
ここでcase文の役割はif式と同様であり、case文の戻り値は最後に実行された式の値である.if文と同様に、同じ行に書く場合はthenまたはコロンを付ける必要があります.
もう1つの最も一般的な形式は、caseの後にターゲットをリストし、各文をターゲットと順次比較することです.
case input_line
when "debug"
print "We are in debug mode."
when /p\s+(\w+)/
dump_variable($1)
when "quit", "exit"
exit
else
print "Illegal command: #{input_line}"
end
別の例:
Season = case month
when 3..5 : "Spring"
when 6..8 : "Summer"
when 9..11: "Autumn"
when 12..2: "Winter"
else "Error"
end
Rubyは演算子===を提供し、クラスが==メソッドを提供する限り、このクラスのオブジェクトはcase文に表示されます.たとえば、正規表現に対して==がパターンマッチングとして定義されます.
Rubyでは、すべてのクラスのベースクラスがClassクラスであり、すべてのクラスインスタンスがClassクラスのインスタンス(to-do)である.==の意味は、パラメータにインスタンスのクラスまたは親クラスが指定されているかどうかを定義します.
case shape
when Square, Rectangle
# ...
when Circle
# ...
when Triangle
# ...
else
# ...
end