From: "Bartosz Dziewoński" Date: 2012-02-04T02:46:34+09:00 Subject: Re: Help please Undefined Method error 2012/2/3 Peter Vandenabeele : > > def get_words >  [].tap do |a| >    while !(input = gets.chomp).empty? >       a << input >    end >  end > end Aw. Do not abuse #tap, please. It's extremely unreadable, especially to a beginner. > * Use  [].tap{|a| a<< stuff}  so you do not have to return the >  result array explicitly (I am not having a variable "words" >  or "array" in the function, it is returned as the final result but >  not stored in an explicit local variable; so I can impossibly >  forget to return the built up array at the end, because "tap" >  returns it automatically There is no advantage to using constructs with tap over regular variable I know of. IMO #tap should only be used to "inject" debugging or other side-effects into a long method chain. (Although, if you have a method chain so long, you probably have other problems...) -- Matma Rex