メモ:Enumerator
似てるけど大きな違い。メソッドが何を返すか気をつけよう。
Enumeratorオブジェクトを返すメソッドは、もっとあっても良いと思う。
id:ku-ma-meさんのmame/enumerabler · GitHubとか採用されるといいな。
# ruby 1.9.2p180 (2011-02-18) [i386-mingw32] num = 10 puts num.downto( 1 ).map{ |n| "*" * n } # Case.1 num.downto( 1 ).map{ |n| puts "*" * n } # Case.2 num = 2**16 #puts num.downto( 1 ).map{ |n| "*" * n } # => `*': failed to allocate memory (NoMemoryError) #num.downto( 1 ).map{ |n| puts "*" * n } # Case.2 num = 10 # Case.1 enum = num.downto( 1 ).map fmt = lambda{ |n| "*" * n } data = enum.each( &fmt ) puts data # Case.2 enum = num.downto( 1 ).map out = lambda{ |n| puts "*" * n } enum.each( &out ) num = 2**16 # Case.1 #enum = num.downto( 1 ).map #fmt = lambda{ |n| "*" * n } #data = enum.each( &fmt ) # => `*': failed to allocate memory (NoMemoryError) #puts data # Case.2 #enum = num.downto( 1 ).map #out = lambda{ |n| puts "*" * n } #enum.each( &out )