等差数列。
成果物
情報源
公式ドキュメントからのリンクが間違っていたのでググってURLをゲットした。いいかげんにしろ。
Enumerator::ArithmeticSequence
等差数列を提供するためのクラス。
Enumrator
, Enumerable
を継承している。
ArithmeticSequenceオブジェクトは、Numeric#step, Range#step によって生成されます。
メンバ抜粋
インスタンスメソッド
== begin each end exclude_end? first hash inspect last size step
step
がポイントと思われる。等しい差分をもった数列なのだろう。
コード例がひとつもない。new
メソッドがない。どうやったら生成できるの? どうやって使うの?
Enumerator::ArithmeticSequence.new #=> undefined method `new' for Enumerator::ArithmeticSequence:Class (NoMethodError)
each
はインスタンスメソッドなのでクラスからは使えないし。
Enumerator::ArithmeticSequence.each{|n| p n} #=> undefined method `each' for Enumerator::ArithmeticSequence:Class (NoMethodError)
要約のところに以下のように書いてあった。
ArithmeticSequenceオブジェクトは、Numeric#step, Range#step によって生成されます。
3.step(7) #=> (3.step(7)) 3.step(7).class #=> Enumerator::ArithmeticSequence
s = 3.step(7) p s.step #=> 1 p s.begin #=> 3 p s.end #=> 7 p s.first #=> 3 p s.last #=> 7 p s.size #=> 5
今度はstepを変えてみる。
3.step(7,2) #=> (3.step(7)) 3.step(7,2).class #=> Enumerator::ArithmeticSequence
s = 3.step(7,2) p s.step #=> 2 p s.begin #=> 3 p s.end #=> 7 p s.first #=> 3 p s.last #=> 7 p s.size #=> 3
begin
/first
、end
/last
はそれぞれ同じく最初と最後の要素を返す。
所感
Numeric#step, Range#stepが大事。
対象環境
- Raspbierry pi 4 Model B
- Raspberry Pi OS buster 10.0 2020-08-20 ※
- bash 5.0.3(1)-release
$ uname -a Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux