(他の言語でもそうだけど) 「Ruby ならいろいろな方法で書けるよ!」というお話
まとめ
コードは書くばかりではなく 読むことだってある
1ヶ月後の自分だったり 他者が、読んだときにすぐに分かる、わかり易しいコードを書こう
要件
- 1 から 3 のランダムな値を生成
- 値をもとに...
- 1 なら「凶」
- 2 なら「吉」
- 3 なら「大吉」
上のような動作をするプログラムを書きたい
色々な書き方
ただパターンを増やしても長くなるだけなので、コメントアウトしたコードでも 別の書き方を紹介する
今回は4パターン、書き方を用意した
1. if
と ==
比較
n = rand(3) + 1 # 1 〜 3 の3種の値を生成 # n = rand(1..3) # Range でも生成範囲を指定できる # n.eql?(1) とオブジェクトに訊く形でも書ける if n == 1 puts '凶' elsif n == 2 puts '吉' else puts '大吉' end
次のように if
での判定結果を変数に代入してもいい (if
のなかで別個のことをするのか しないのか、考えずに読み進められる)
result = if n == 1 '凶' elsif n == 2 '吉' else '大吉' end puts result
2. case...when
で比較
case n when 1 puts '凶' when 2 puts '吉' else puts '大吉' end
(case...when
でも同様、先に挙げた if
での result
変数... 任意の変数への代入ができる)
3. Hash
の対応付けから取り出す
Hash
を作ったその場から値を取り出す方法
if
どこいった!?
puts({ 1 => '凶', 2 => '吉', 3 => '大吉', }[rand(1..3)])
4. 配列に収めて取り出す
今回の例だと実は if
も case...when
も、要らなかったりする
puts %w[凶 吉 大吉].sample
最初に挙げた「1 から 3 のランダムな値を生成」や、文字列との対応付けのための数値比較も考える必要がなくなる