Rubyのイテレータなメソッドの中には「ブロックを指定しないとEnumeratorを返す」メソッドがいっぱいありますが、そういうメソッドの作り方がRuby歴数ヶ月の自分にはわからなかったので調べました。 ブロックが指定されたかどうかはblock_given?でわかる Enumeratorを返すんだからEnumerator.newとかするのかな? Enumeratorの説明を見てみる Enumeratorを生成するにはEnumerator.new、Object#to_enum、Object#enum_forの3つの方法があるらしい おもむろに~/lib/ruby/の下でgrepしてみたらそれっぽいコードが引っかかる というわけで、本体同梱クラスをお手本にして、こうすればよいということがわかりました。 class Foo def initialize(str) @str = str end d