Ruby 技術メモ1

論理値、論理演算子、自己代入

投稿日:

真/偽

TrueClassのインスタンスがtrue、
FalseClassのインスタンスがfalse。
NilClassのインスタンスがnil。

falseとnilのみ偽として評価される。
falseとnil以外は全て真として評価。

この動きにより、変数に値が入っているかどうかは、
nilと比較する必要はなく変数を評価するだけで良い。

PHPのように変数に値が入っていることをチェックする必要はない。

if文

オーソドックスなif文。

if文は式なのでif文を評価すると値が返る。
評価値はif式内で最後に評価された値となる。

後置ifという構文。簡単にコードが短くなって便利そう。だが…、
後置ifがfalseの場合でも、変数自体は確保される。が値が入らない。
意図せず変数がnilになるコードを書く可能性がある。
未定義の変数と、確保済みだが値なしの変数は明確に異なる。

もし偽だったら、を書きたい場合はunless構文を使う。

単項演算子?は使える。

論理演算子

論理演算子は最後に評価したオペランドの値を返す。
評価結果(true,false)を返さない。

自己代入

変数が真でない場合に限りその変数に値を代入する自己代入。
これは、論理演算の際どい評価順序を利用していて、何故そうなるかは深い深い海の底にある。

zが真でない場合、つまりzがfalseかnilの場合に、
論理和演算子の右側のオペランドである1の評価結果(=1)がzに代入される。
未確保・未定義の変数の評価結果はnilなので、
未定義・未確保の場合に限り初期値を入れることができる。

&&とand、||とor、!とnot

&&とand、||とor、!とnotという風に、同じ意味の論理演算子が対で用意されている。
それぞれ評価時の優先順位が異なる。(以下のようになる)

-Ruby, 技術メモ1
-

Copyright© ikuty.com , 2024 AllRights Reserved Powered by AFFINGER4.