Rubyの制御構造は式

- - posted in Ruby

Rubyでは(Cなどとは異なり)制御構造は式であって、何らかの値を返すものがあります

Ruby 2.0.0 リファレンスマニュアル > 制御構造

PHP脳な自分には最初ピンとこなかったのでメモ代わりに。

if

  • Ruby
1
2
3
mes = if (true) then "hoge" else "fuga" end
puts mes
# hoge
  • PHP
1
2
3
4
<?php
if (true) { $mes = 'hoge'; } else { $mes = 'fuga'; }
echo $mes;
// hoge

case

  • Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
age = 29
mes = case age
      when 1..9
        "child"
      when 10..19
        "teenager"
      when 20..29
        "adult"
      else
        "other"
      end

puts mes
# adult
  • PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$age = 29;
switch ($age) {
    case in_array($age, range(1, 9)):
        $mes = 'child';
        break;
    case in_array($age, range(10, 19)):
        $mes = 'teenager';
        break;
    case in_array($age, range(20, 29)):
        $mes = 'adult';
        break;
    default:
        $mes = 'other';
        break;
}
echo $mes;
// adult

Rubyの方がシュッとしてます。

caseについては下記が大変勉強になりました。
Rubyのcaseを〇〇(言語名)のswitch文だと思っている人たちにぼくから一言ガツンと申し上げたい

Comments