Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | 演算子

概要

演算子

詳細

Rubyの主な演算子は以下です。

演算子 意味
== 等価性の確認
=== case文のwhenで利用されている。例えばcase文でRange 1..3が2と一致するのはこのため
<=> 汎用比較演算子
レシーバーが引数より
小さければ-1
等しければ0
大きければ+1
<,<=,>=,> 未満,以下,以上,超過
=~ 正規表現パターンマッチング
eql? レシーバの引数との型と値の確認
equal? レシーバと引数のオブジェクトIDを比較

サンプルコード

# encoding: Windows-31J
require "pp"

def print_eval(str, binding=nil)
  print "\(#{str}\) => "
  puts eval(str, binding)
end

expressions =<<EOS
1==1
1 == 1.0
1 == 2
(1..2) == 2
(1..2) == (1..2)
(1..2) === 2
(1..2) === 3
1 <=> 0
1 <=> 1
1 <=> 2
"test" =~ /es/
("test" =~ /zz/).nil?
1.eql? 1
1.eql? 1.0
1.equal? 1
1.equal? 1.0
EOS

expressions.each_line {|line|print_eval line.chop}

str1 = "hoge"
str2 = "hoge"
print_eval(%{str1.equal? str1}, binding)
print_eval(%{str1.equal? str2}, binding)

出力

(1==1) => true
(1 == 1.0) => true
(1 == 2) => false
((1..2) == 2) => false
((1..2) == (1..2)) => true
((1..2) === 2) => true
((1..2) === 3) => false
(1 <=> 0) => 1
(1 <=> 1) => 0
(1 <=> 2) => -1
("test" =~ /es/) => 1
(("test" =~ /zz/).nil?) => true
(1.eql? 1) => true
(1.eql? 1.0) => false
(1.equal? 1) => true
(1.equal? 1.0) => false
(str1.equal? str1) => true
(str1.equal? str2) => false