コンテンツにスキップ

演算子

演算子の順序

以下の優先順位によって処理される。

高い   ::
       []
       +(単項)  !  ~
       **
       -(単項)
       *  /  %
       +  -
       << >>
       &
       |  ^
       > >=  < <=
       <=> ==  === !=  =~  !~
       &&
       ||
       ..  ...
       ?:(条件演算子)
       =(+=, -= ... )
       not
低い   and or
# 例
a && b || c   # => (a && b) || c
a || b && c   # =>  a || (b && c)

短絡評価

  • ||, &&, or, and は短絡評価され、必要な場合だけ、右辺が評価される。
# 例
m = true
m or n = true
p n  # => nil (or の右辺が実行されないため)

演算子のオーバーライド

Ruby の演算子の多くが、ただのメソッドのためオーバーライド(再定義)可能。

例えば、文字列を結合する + 演算子は String#+ というメソッドである。

print "hoge" + "hage" # => hogehage

# 上記は以下のシンタックスシュガー
print "hoge".+("hage") # => hogehage
  • オーバーライドできる演算子

    |  ^  &  <=>  ==  ===  =~  >   >=  <   <=   <<  >>
    +  -  *  /    %   **   ~   +@  -@  []  []=  ` ! != !~
    
  • オーバーライドできない演算子

    = ?: .. ... not && and || or ::
    += -= *= /=