NaaN日記

やったこと、覚えたことを発信する場

case文(Ruby)

やっぱりcase文ってどの言語においてもなんとなく好きなんですよね。
Rubyのcase文って、JavaScriptだとかC言語だとかのswitch文とは違うな~と。
defaultじゃなくてelseだったり。

case文
case 比較したいオブジェクト
when1 then
  処理
when2 then
  処理
~~
else
  処理
end

thenは省略できる

caseを使ってじゃんけんをしてみた
puts "グー: 1, チョキ: 2, パー: 3, おわり: 4"
list = [1, 2, 3]
loop do
  hand1 = gets.to_i
  hand2 = rand(1..3) # 1, 2, 3の中からランダムに
  result = (hand1 - hand2)
  if hand1 == 4
    break
  elsif list.count(hand1) == 0 #入力がlist(123)以外だったら次に行く
    next
  else
    puts hand2
    case result
    when -2
      puts "負け"
    when 0
      puts "あいこ"
    when 1
      puts "負け"
    else
      puts "勝ち"
    end
  end
end
===

値と一致するかどうかは「===」演算子を使って判定
左辺が数値や文字列 のときは「==」と同じ意味
正規表現の場合はマッチしたかどうか、クラスの場合はクラスのインスタンスかどうかを判定する

やってて気づいたこと

"\n"の入力はto_iを使うと0になってしまう