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