On 29.05.2007 13:59, Chris Carter wrote: > On 5/29/07, Robert Klemme <shortcutter / googlemail.com> wrote: >> On 29.05.2007 13:07, Jano Svitok wrote: >> > On 5/29/07, Jon Harrop <jon / ffconsultancy.com> wrote: >> >> Michael Fellinger wrote: >> >> > some people use _ as a temporary meaningless variable, just a >> >> > throw-away so to say. >> >> > In this case something like >> >> > >> >> > hash = {:a => :b, :c => :d} >> >> > >> >> > and you are not interested in the :b and :d >> >> > >> >> > hash.each do |key, _| >> >> > p key >> >> > end >> >> > >> >> > I'm not necessarily a friend of this technique, but it seems easy on >> >> > the minds of some people. >> >> >> >> Right, this is exactly what I guessed it was doing (it is the same in >> >> SML/OCaml/F#) but what value was being thrown away in the Ruby program >> >> and >> >> where did it come from? >> >> >> >> (1..n).inject(x) { |acc, _| yield(acc) } >> >> >> >> -- >> >> Dr Jon D Harrop, Flying Frog Consultancy >> >> The F#.NET Journal >> >> http://www.ffconsultancy.com/products/fsharp_journal/?usenet >> > >> > inject takes a block with two parameters. classic example is a sum >> of an >> > array: >> > >> > array.inject(0) {|sum, item| sum + item } >> > >> > so, in this case, item is not needed, so it is replaced by a variable >> > with name of "_" >> > that by convention means "temporary", "throw away" >> > >> > it can be anything else: >> > (1..n).inject(x) { |acc, i_dont_need_this| yield(acc) } >> >> Actually, #inject does not really make sense in this case. All that >> happens here is that some value is yielded n times to a block. That >> could have been done much more concise like this: >> >> n.times { yield x } >> >> Kind regards >> >> robert >> >> > > Actually, If it does what I think it does, the inject is needed > because as we know, inject sets the value returned from the block as > the accumulator for the next round. Therefore: >>> nest(2) {|x| p x; [22] } > 2 > [22] > => [22] Stupid me. Of course you are right. I should have taken more time to digest this - or have more coffee. Thank you for correcting me! Kind regards robert