【Ruby】『&&』と『&』の違い

Ruby

&&について

&&は論理積(AND)を求める演算子です。

&&は左から順に式を評価し、『真』なら右辺を評価、『偽』なら評価した値を返します。
全ての評価式が『真』の場合は最後に評価した値を返します。
なお、Rubyにおいて評価が『偽』となるfalsyな値はnilfalseです。

### 「nil」の評価は「偽」なので「nil」を返す
> nil && true
=> nil

### 「false」の評価は「偽」なので「false」を返す
> false && true
=> false

### 「5」の評価は「真」、「nil」の評価は「偽」なので「nil」を返す。(「true」は評価されない)
> 5 && nil && true
=> nil

### 全ての評価が真なので、最後に評価した「true」を返す
> 5 && true
=> true

### 全ての評価が真なので、最後に評価した「10」を返す
> 5 && 10
=> 10

### 全ての評価が真なので、最後に評価した「2.even?」を返す
> 5 && 2.even?
=> true

&について

&は積集合を求める演算子です。
積集合を利用することで重複する値が抽出できます。

[1, 1, 2, 3] & [3, 1, 4]
=> [1, 3]