Ruby 条件分岐

Ruby には、いくつかの非常に一般的な条件構造が用意されています。ここでは、すべての条件文と Ruby で使用できる修飾子について説明します。

Ruby if...else文

構文

if conditional [then] code... [elsif conditional [then] code...]... [else code...] end

if式は条件付き実行に使用されます。値falseとnilは偽であり、他の値はすべて真です。Ruby は elsif を使用し、else if や elif は使用しないことに注意してください。

もしconditionalが真であれば、実行するcode。もしconditionalが真でなければ、else 節で指定された文を実行するcode。

通常、予約語 then は省略します。1行で完全な if 式を記述するには、then で条件式とプログラムブロックを区切る必要があります。以下に示します:

if a == 4 then a = 7 end

例

#!/usr/bin/ruby # -*- coding: UTF-8 -*- x=1 if x > 2 puts "x は 2 より大きい" elsif x <= 2 and x!=0 puts "x は 1 です" else puts "x の値を知ることはできません" end

試してみる »

上記の例の出力結果:

x 是 1

Ruby if修飾子

構文

code if condition

if 修飾子は、if の右側の条件が成立した場合にのみ、if の左側の式を実行することを示します。つまり、もしconditionalが真であれば、実行するcode。

例

#!/usr/bin/ruby $debug=1 print "debug\n" if $debug

試してみる »

上記の例の出力結果:

debug

Ruby unless文

構文

unless conditional [then] code [else code ] end

unless 文は if 文と逆の働きをします。つまり、もしconditionalが偽であれば、実行するcode。もしconditionalが真であれば、else 節で指定された文を実行するcode。

例

#!/usr/bin/ruby # -*- coding: UTF-8 -*- x=1 unless x>2 puts "x は 2 以下です" else puts "x は 2 より大きい" end

試してみる »

上記の例の出力結果は:

x 小于或等于 2

Ruby unless修飾子

構文

code unless conditional

もしconditionalが偽であれば、実行するcode。

例

#!/usr/bin/ruby # -*- coding: UTF-8 -*- $var = 1 print "1 -- この行は出力されます\n" if $var print "2 -- この行は出力されません\n" unless $var $var = false print "3 -- この行は出力されます\n" unless $var

試してみる »

上記の例の出力結果:

1 -- 这一行输出
3 -- 这一行输出

Ruby case文

構文

case expression [when expression [, expression ...] [then] code ]... [else code ] end

case はまず、あるexpression式に対してマッチング判定を行い、その結果に基づいて分岐を選択します。

それは===演算子で比較しますwhen指定されたexpression、一致すれば実行しますwhen部分の内容。

通常、予約語 then は省略します。1行で完全な when 式を記述するには、then で条件式とプログラムブロックを区切る必要があります。以下に示します:

when a == 4 then a = 7 end

したがって:

case expr0 when expr1, expr2 stmt1 when expr3, expr4 stmt2 else stmt3 end

基本的には次のように似ています:

_tmp = expr0 if expr1 === _tmp || expr2 === _tmp stmt1 elsif expr3 === _tmp || expr4 === _tmp stmt2 else stmt3 end

例

#!/usr/bin/ruby # -*- coding: UTF-8 -*- $age = 5 case $age when 0 .. 2 puts "乳児" when 3 .. 6 puts "子供" when 7 .. 12 puts "child" when 13 .. 18 puts "少年" else puts "その他の年齢層" end

試してみる »

上記の例の出力結果は:

子供

case の「式」部分が省略された場合、最初の when 条件部分が真となる式が評価されます。

foo = false bar = true quu = false case when foo then puts 'foo is true' when bar then puts 'bar is true' when quu then puts 'quu is true' end #「bar is true」と表示されます。
その他の拡張