step(limit, step = 1) {|n| ... } -> self[permalink][rdoc][edit]step(limit, step = 1) -> Enumeratorstep(limit, step = 1) -> Enumerator::ArithmeticSequencestep(by: 1, to: Float::INFINITY) {|n| ... } -> selfstep(by: 1, to: Float::INFINITY) -> Enumeratorstep(by: 1, to: Float::INFINITY) -> Enumerator::ArithmeticSequencestep(by:, to: -Float::INFINITY) {|n| ... } -> selfstep(by:, to: -Float::INFINITY) -> Enumeratorstep(by:, to: -Float::INFINITY) -> Enumerator::ArithmeticSequence(?Numeric limit, ?Numeric step) { (Numeric) → void } → self(?Numeric limit, ?Numeric step) → Enumerator[Numeric, self](?by: Numeric, ?to: Numeric) { (Numeric) → void } → self(?by: Numeric, ?to: Numeric) → Enumerator[Numeric, self]-
selfから始め、stepを足しながらlimitを越える前までブロックを繰り返します。stepは負の数も指定できます。また、limitやstepには Float なども指定できます。Complex では未定義化されています。
- [PARAM]
limit: -
ループの上限あるいは下限を数値で指定します。
stepに負の数が指定された場合は、下限として解釈されます。 - [PARAM]
step: - 各ステップの大きさを数値で指定します。負の数を指定することもできます。
- [PARAM]
to: -
引数
limitと同じですが、省略した場合はキーワード引数byが正の数ならFloat::INFINITYを、負の数なら-Float::INFINITYを指定したとみなされます。 - [PARAM]
by: -
引数
stepと同じです。 - [RETURN]
-
ブロックが与えられたときは
selfを返します。 - [RETURN]
- ブロックが与えられなかったときは Enumerator を返します。
- [RETURN]
-
特に
limit(またはto)とstepの両方がNumericまたはnilのときは Enumerator::ArithmeticSequence を返します。 - [EXCEPTION]
ArgumentError: -
stepに0を指定した場合に発生します。
2.step(5) { |n| p n } # => 2 # 3 # 4 # 5 1.1.step(1.5, 0.1) { |n| p n } # => 1.1 # 1.2000000000000002 # 1.3 # 1.4000000000000001 # 1.5 10.step(6, -1) { |n| p n } # => 10 # 9 # 8 # 7 # 6 3.step(by:2, to:10) { |n| p n } # => 3 # 5 # 7 # 9注:0.1 は 2 進法の浮動小数点数では正確な表現ができない(2 進法で 0.1 は 0.00011001100.... となる)ので、以下のようなループでは誤差が生じて意図した回数ループしないことがある。
例stepはこの誤差を考慮して実装されている。i = 1.1 while i <= 1.5 p i i += 0.1 end # => 1.1 # 1.2000000000000002 # 1.3000000000000003 # 1.4000000000000004 # 1.5 が表示されない[SEE_ALSO] Integer#downto
- [PARAM]