普通のコード
rubyの普通のrangeオブジェクトだとこうです
(0...n).each do |i|
puts i
end
for文で書き直すと以下。
for i in 0...n
puts i
end
range関数
しかし、私はPythonのようにrangeを書きたいと思いました。
そこで、以下の関数を定義します。
def range(l, r=nil, s=nil)
return 0...l unless r
return l...r unless s
(l...r).step(s)
end
range(l)
のとき、0...l
を返す。
range(l, r)
のとき、l...r
を返す。
range(l, r, s)
のとき、(l...r).step(s)
を返す。
使い方は以下です。※コロンは不必要、endは必要です。
for i in range(10, 20, 2)
puts i
end
#=> 10
#=> 12
#=> 14
#=> 16
#=> 18