条件

条件分岐 の Ruby

22個の演習

条件分岐について

Rubyには、制御フロー式と呼ばれるものがあります。これはプログラムの実行の流れを制御するために使い、真または偽とみなされる値を受け取ります。 真または偽とみなされる値を作るために使える演算子もあり、これらは比較演算子と呼ばれます。

コードを実行するかしないかを制御するための、主な制御式が2つあります。言い換えると、どちらの分岐が実行されるかを決めるものです。

その2つとは、if式とunless式です。

比較演算子

比較演算子は、値を比較してtrueまたはfalseを返すために使います。 以下に挙げる演算子は、比較する2つの値が同じ型であることを必要とします。値の型が同じでない場合、コンパイラーはエラーを投げます。 以下は演算子の一覧と、trueになる例です。

演算子 説明 例
< より小さい 4 < 5
<= 以下 4 <= 4
> より大きい 3 > 1
>= 以上 2 >= 2

等しい・等しくない演算子は、すでに挙げた演算子とは異なり、どのような型の値でも比較できます。 ==演算子は、2つの値が等しいかどうかを確認するために使います。これは値の型の確認も含みます。 !=も同じように動きますが、値が等しくない場合にtrueを、等しい場合にfalseを返します。 以下は等しい・等しくない演算子の一覧と、trueになる例です。

演算子 説明 例
== 等しい 4 == 4
!= 等しくない 5 != 4

複合比較演算子

複合比較演算子(宇宙船演算子と呼ばれることもあります)は、特別な比較演算子です。 特別なのは、真または偽とみなされる値ではなく、数値を返す点です。 <=>と書き、2つの値を比較するために使います。 左の値が右の値より大きい場合は1、左の値が右の値より小さい場合は-1、値が等しい場合は0を返します。

1 <=> 2 # => -1
2 <=> 2 # => 0
3 <=> 2 # => 1

if文

if文は、与えられた条件が真とみなされるか偽とみなされるかを確認するために使います。 条件が真とみなされる場合、if文の中のコードが実行されます。 if文はendキーワードで終わります。

value = 1
if value == 1
  "1 is equal to 1"
end
# => "1 is equal to 1"

if value > 2
  "1 is greater than 2"
end
# => nil

unless文

unless文はif文とよく似た働きをしますが、条件が偽とみなされる場合にunless文の中のコードを実行します。

value = 1
unless value == 1
  "1 is not equal to 1"
end
# => nil

unless value > 2
  "1 is not greater than 2"
end
# => "1 is not greater than 2"

else文

else文はif文と組み合わせて使うことができます。 else文は、ifの分岐が実行されなかった場合に実行されます。

value = 1
if value == 1
  "1 is equal to 1"
else
  "1 is not equal to 1"
end
# => "1 is equal to 1"

if value > 2
  "1 is greater than 2"
else
  "1 is not greater than 2"
end
# => "1 is not greater than 2"

「連鎖するif」文

elsif文はif文と組み合わせて使うことができます。 ifの分岐が実行されず、かつelsif文の条件が真とみなされる場合に、elsif文が実行されます。 elsif文はつなげて書くことができ、最初に真とみなされた条件が実行されます。 if文の最後にelse文を置くこともでき、これより前のどの文も真にならなかった場合に実行されます。

value = 1
if value == 0
  "1 is equal to 0"
elsif value > 2
  "1 is greater than 2"
else
  "1 is not equal to 0 and 1 is not greater than 2"
end
# => "1 is not equal to 0 and 1 is not greater than 2"

後置のifとunless

if文とunless文は、[後置][if-as-suffix]としても使えます。これは、条件が真の場合に1行のコードだけを実行したいときに便利です。 実行したいコードの後ろにifまたはunlessを置くことで実現します。

value = 1
"1 is equal to 1" if value == 1
# => 1 is equal to 1

"1 is not equal to 1" unless value == 1
# => nil
GitHubで編集 リンクは新しいウィンドウまたはタブで開きます

条件分岐を学習する

練習はロックされています

条件分岐を練習するには、あと10個の演習のロックを解除してください