条件式
nil でも 定数 false でもないものは全て真(true)を意味する
演算子 |
意味 |
== |
等価性をテストする |
=== |
case 文の when で使用 |
<=> |
汎用比較演算子。レシーバが引数より小さいとき -1, 両者が等しいとき 0, レシーバが引数より大きいとき +1 を返す |
<, <=, =>, > |
大小の比較 |
=~ |
正規表現パターンマッチ |
eql? |
レシーバと引数の型と値が等しいとき true を返す。例えば、1 == 1.0 は true、1.eql?(1.0) は false |
equal? |
レシーバと引数のオブジェクトIDが同じとき true を返す |
defined?
引数が定義されているかどうか。定義されていない場合は nil
defined? a
=> nil
a = 1
=> 1
defined? a
=> "local-variable"
論理式の値
words = Hash.new
(words[:key] ||= []) << "value1"
=> ["value1"]
(words[:key] ||= []) << "value2"
=> ["value1", "value2"]
words[:key] = words[:key] || []
words[:key] << "value3"
=> ["value1", "value2", "value3"]
条件式
if 〜 then
[exp]
elsif 〜 then
[exp]
else
[exp]
end
- if 文を複数行にまたがって書くときは then を省略できます。
if 〜
[exp]
elsif 〜
[exp]
else
[exp]
end
if 〜: [exp]
elsif 〜: [exp]
else [exp]
end
unless 〜
[exp]
else
[exp]
end
puts "aaa" if true
=> aaa と表示される
puts "aaa" if nil
=> aaa と表示されない
-case式
>|ruby|
def leep(year)
leep = case
when year % 400 == 0: true
when year % 100 == 0: false
else year % 4 == 0
end
return leep;
end
leep(2000)
=> true
leep(2100)
=> false
def test
while line = gets
case line.chomp!
when "debug"
puts "debug!!"
when "quit"
return
else
puts line
end
end
end
case line.chomp!
when "debug" then puts "debug!!"
when "quit" then return
else puts line
end
case line.chomp!
when "debug": puts "debug!!"
when "quit": return
else puts line
end