Ruby-if-else

提供:Dev Guides
移動先:案内検索

Ruby-if …​ else、case、unless

Rubyは、現代の言語によくある条件付き構造を提供します。 ここでは、Rubyで使用可能なすべての条件ステートメントと修飾子について説明します。

Ruby if …​ elseステートメント

構文

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

_if_式は、条件付き実行に使用されます。 _false_および_nil_の値はfalseであり、他のすべてはtrueです。 Rubyはelsifを使用しますが、ifやelifは使用しません。

_conditional_がtrueの場合、_code_を実行します。 _conditional_が真でない場合、else節で指定された_code_が実行されます。

if式の_conditional_は、予約語_then_、改行、またはセミコロンによってコードから分離されています。

#!/usr/bin/ruby

x = 1
if x > 2
   puts "x is greater than 2"
elsif x <= 2 and x!=0
   puts "x is 1"
else
   puts "I can't guess the number"
end
x is 1

ルビif修飾子

構文

code if condition

_conditional_がtrueの場合、_code_を実行します。

#!/usr/bin/ruby

$debug = 1
print "debug\n" if $debug

これは、次の結果を生成します-

debug

ステートメント以外のRuby

構文

unless conditional [then]
   code
[else
   code ]
end

_conditional_がfalseの場合、_code_を実行します。 _conditional_がtrueの場合、else句で指定されたコードが実行されます。

#!/usr/bin/ruby

x = 1
unless x>=2
   puts "x is less than 2"
 else
   puts "x is greater than 2"
end

これは、次の結果を生成します-

x is less than 2

修飾子を除いてRuby

構文

code unless conditional

_conditional_がfalseの場合、_code_を実行します。

#!/usr/bin/ruby

$var =  1
print "1 -- Value is set\n" if $var
print "2 -- Value is set\n" unless $var

$var = false
print "3 -- Value is set\n" unless $var

これは、次の結果を生成します-

1 -- Value is set
3 -- Value is set

Rubyのcaseステートメント

構文

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

caseで指定された_expression_と===演算子を使用するときに指定された_expression_を比較し、一致するwhen節の_code_を実行します。

when句で指定された_expression_は、左のオペランドとして評価されます。 一致するwhen節がない場合、_case_は_else_節のコードを実行します。

_when_ステートメントの式は、予約語then、改行、またはセミコロンによってコードから分離されます。 したがって-

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

$age =  5
case $age
when 0 .. 2
   puts "baby"
when 3 .. 6
   puts "little child"
when 7 .. 12
   puts "child"
when 13 .. 18
   puts "youth"
else
   puts "adult"
end

これは、次の結果を生成します-

little child