I started learning Ruby on Rails and found myself confounded by the syntax, so I had to read about somet of the Ruby syntax. I learned the syntax from http://www.cs.auckland.ac.nz/references/ruby/doc_bundle/Manual/man-1.4/syntax.html:
method_call do [`|' expr...`|'] expr...end
They call it an Iterator. I understand an iterator runs through a loop, but I don’t understand how exactly I’m supposed to read this or what’s going on in in this syntax. I see it all the time in RoR screencasts and the words make sense, but I actually have no idea what’s going on. Could anyone explain this to me?
edit: example
respond_to do |format|
format.json
format.xml { render :xml => @posts }
end
Methods can take a construct called “Blocks”. These are anonymous methods that get passed into the method.
Another syntax for this is:
Basically, you are saying that for each item in an iteration, name it “var” and do something with that item. The method simply calls your block that you passed in as it “yields” items to it.
Does this help?
edit: In your example, you they are using the iterator pattern in a funny way… probably only passing one
formatobject into your block, so you can then tell it which formats to handle, and what to do when you see it.In other words, they are using the pattern to create a DSL of sorts that lets you configure what you respond to.