Ruby 技術メモ

範囲リテラル、case式、while式

投稿日:

範囲を表すリテラルが言語仕様として準備されている。

範囲リテラル

範囲クラスはRangeクラスのインスタンス。
".."により開始、終了の両方を含む範囲を表現する。"..."だおt終了は含まれない。

包含と同値

include?により範囲に値が含まれるかどうかを調べられる。

なお、===演算子も包含関係を表す。

==演算子は同値関係を表す。

添字演算子

配列の添字演算子に範囲を指定することができる。何番目から何番目という表現はかなり直感的。

文字列の添字演算子にも範囲を指定することができる。部分文字列を範囲で表現できる。直感的。

case式

phpなど他の言語のswitch文。case when.. と書く様子。
でもなぜswitchではいけなかったのだろうか。
case式自体の評価値はcase式内で最後に評価された値となる。

whenで何が行なわれているかというと、===演算子によって同値の判断がされている。
なので、whenにRangeを指定すると、===演算子によって包含関係が評価される。

while式

phpのwhileと同等。条件が真である間繰り返す。

phpなどにもあるように、ループの末尾にwhileを書くことができる。
最初の1回は必ず実行される例のやつ。
後に置くので"後置while"という名前がついている。

後置whileとは別に、後に置くが"修飾詞"として使う書き方がある。
最初の1回はwhileが評価されるところが後置ifと異なる。

until式

条件が真になるまで繰り返す(真になったら抜ける)、専用の条件式。
Rubyは条件式を書く時に否定文を書く必要がない。(たぶん)

-Ruby, 技術メモ
-

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