タグ

ブックマーク / qiita.com/pasela (1)

  • ブロックを与えない場合にEnumeratorを返すメソッドを作る - Qiita

    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

    ブロックを与えない場合にEnumeratorを返すメソッドを作る - Qiita
    cknbstr
    cknbstr 2013/10/22
    enum_forすげえ
  • 1