From: Tom Cloyd Date: 2009-01-15T10:45:12+09:00 Subject: Re: yield example baffling - need help Tom Cloyd wrote: > I'm studying the yield statement for the first time, today. > > All's well until I see this example: > > def myeach(myarray) > iter = 0 > while (iter < myarray.length): > yield(myarray[iter]) > iter += 1 > end > end > > testarray = [1,2,3,4,5] > myeach(testarray) {|item| print "#{item}:"} > → 1:2:3:4:5: > > I see a method with one parameter. There a block to the right of the > method call, inexplicably. It would make sense if some iteration were > going on, but I don't see that at all. One call, one execution (with a > loop), and we're out. What does "item" have to count through? > > How can that yield do anything? How does it know about the block? It's > not passed in. The iteration appears to be happening IN the method, > using a block it cannot possibly see. Ouch! After some minutes, I'm > not getting this at all. > > Can anyone clear my head for me. I've never seen anything like this. > Or is it just a weird Ruby idiom I'll just have to accept? > > Thanks in advance. > > Tom > > Arrgh. What a dolt. I just realized that ALL the yield examples I've been studying have this block sitting over to the right - I was converting the curly braces to parens in my mind, and so didn't see them. It IS idiomatic weirdness. I yield to higher wisdom. t. -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Tom Cloyd, MS MA, LMHC - Private practice Psychotherapist Bellingham, Washington, U.S.A: (360) 920-1226 << tc@tomcloyd.com >> (email) << TomCloyd.com >> (website) << sleightmind.wordpress.com >> (mental health weblog) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~