tanish-kr's learning log

Learning output log

Ruby

演算子

演算子の優先順位

高い

  • ::
  • []
  • +(単項) ! ~
  • **
  • -(単項)
  • * / %
  • + -
  • << >>
  • &
  • | ^
  • > >= < <=
  • <=> == === != =~ !~
  • &&
  • ||
  • .. ...
  • ?:(条件演算子)
  • =(+=, -= ...)
  • not
  • and or

低い

代入

代入式は変数などに値を設定するために用いられます。代入はローカル変数や定数の宣言としても用いられます。

foo = bar
foo[0] = bar
foo.bar = bar

自己代入

foo += 12   # foo = foo + 12
a ||= 1     # aが未定義の場合、1を代入。初期化時のイディオムの一種

多重代入

多重代入は複数の式または配列から同時に代入を行います。左辺の格式は代入可能でなければなりません。左辺の最後の式の直前に*がついていると、対応する左辺の無い余った要素が配列として代入されます。

a, b, c = 1, 2, 3
foo, = list()
foo, *rest = list2()

範囲式

条件式以外の場所では式1から式2までの範囲オブジェクトを返します。範囲オブジェクトはRangeクラスのインスタンスです。...で生成された範囲オブジェクトは終端を含みません。

1..10   # 1~10までのRange
1...10  # 1~9までのRange (10は含まない)

and

左辺と右辺の両方がtrueの場合のみtrueを返します。andは優先順位の低い演算子です。

true && true    # true
true and true   # true
true && false   # false
false && true   # false

or

左辺と右辺のいずれかがtrueの場合、trueを返します。orは優先順位の低い演算子です。 左辺の結果が儀の場合のみ右辺を評価します。

true || false   # true
true or false   # true
false || true   # true
false || false  # false

not

否定式

! true       # false
not false    # truea
true != false # 一致していない場合の条件を表す

条件演算子(三項演算子)

式1の結果によって式2または式3を返します。

obj == 1 ? foo : bar