イテレータの引数。
成果物
情報源
Enumerator::Yielder
Enumerator.new で使われるクラスで、直接使うものではありません。
インスタンスメソッド
<< to_proc yield
<<
Enumerator.new で使うメソッドです。
生成された Enumerator オブジェクトの each メソッドを呼ぶと Enumerator::Yielder オブジェクトが渡されたブロックが実行され、ブロック内の << が呼ばれるたびに each に渡されたブロックが << に渡された値とともに繰り返されます。
例
enum = Enumerator.new do |y| y << 1 y << 2 y << 3 end enum.each do |v| p v end # => 1 # 2 # 3
一個ずつしか入れられないだと?! 面倒くさい……。
to_proc
Enumerator.new で使うメソッドです。
引数を Enumerator::Yielder#yield に渡す Proc を返します。これは Enumerator::Yielder オブジェクトを他のメソッドにブロック引数として直接渡すために使えます。
例
text = <<-END Hello こんにちは END enum = Enumerator.new do |y| text.each_line(&y) end enum.each do |line| p line end # => "Hello\n" # "こんにちは\n"
yield
Enumerator.new で使うメソッドです。
生成された Enumerator オブジェクトの each メソッドを呼ぶと Enumerator::Yielder オブジェクトが渡されたブロックが実行され、ブロック内の yield メソッドが呼ばれるたびに each に渡されたブロックが yield メソッドに渡された値とともに繰り返されます。
例
enum = Enumerator.new do |y| y.yield 1, 2, 3 end enum.each do |x, y, z| p [x, y, z] end # => [1, 2, 3]
対象環境
- Raspbierry pi 4 Model B
- Raspberry Pi OS buster 10.0 2020-08-20 ※
- bash 5.0.3(1)-release
- Ruby 3.0.2
$ uname -a Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux