10年以上Rubyを使っていて、今更ながら ... 演算子を知った。
.. 演算子と同様にRangeオブジェクトを返すのだが、...で生成したRangeオブジェクトは範囲の末尾を含まない。Numeric a, bに対するa..bはa以上b以下を意味するのに対し、a...bはa以上b未満を意味する。手っ取り早く実例。
irb> (0..3).last => 3 irb> (0...3).last => 3 irb> (0..3).exclude_end? => false irb> (0...3).exclude_end? => true irb> (0..3).include?(3) => true irb> (0...3).include?(3) => false irb> (0..3).each {|i| p i} 0 1 2 3 => 0..3 irb> (0...3).each {|i| p i} 0 1 2 => 0...3 irb> (0..3) == (0...3) => false irb> (0..2) == (0...3) => false
単なるループのためにRangeオブジェクトを作るケースで、末尾を含みたくないがためにa..(b-1)のようにしていたところを、a...bと書けるわけだ。
0 件のコメント:
コメントを投稿