From: Zach Date: 2006-01-24T04:30:55+09:00 Subject: Re: greetings "The fact that the right-hand side is surrounded by curly braces is what makes it a Hash. Each key/value pair initially added to the Hash looks like "key => value"." I don't know about the braces, but I was meaning more about the Parenthesis (sorry about the type in the earlier example) for example: | link_to("View Article", :controller => "blah", :action => "yay", :id => 1)| I guess I'm clueless as to what the difference is now between sending it a block and sending it parameterized symbols? -Zach Mark Volkmann wrote: >On 1/23/06, Zach wrote: > > >>I may be totally off base, being a Ruby Newbie myself, but I believe the >>point of the :variable is sort of passing a HashMap to the method...for >>instance: >> >>inside the method >> center = { :x => 1, :y => 2 } >> >> > >The fact that the right-hand side is surrounded by curly braces is >what makes it a Hash. Each key/value pair initially added to the Hash >looks like "key => value". In this particular case, they decided to >use symbols for keys which is pretty common. The colon means that the >word following it is a symbol. They could have also used String keys. > >There was a long discussion about what symbols are recently, so I >hesitate to try to simplify this, but here goes. Think of a symbol as >a string that will be the same object in memory each time you use it. >For example, "foo" and "foo" will be two different objects in memory, >but :foo and :foo will refer to the same object. > > > >>you can refer to the parameters as :x and :y. >> >> > >Well, in a Hash they are called keys. > > > >>As opposed to mandating >>the prototype of the method being center(x, y). >> >> > >That's a good point. Passing a Hash to a method, in a way, allows you >to pass arbitrary parameters if you think of the keys as being >parameter names the values as being parameter values. > > > >>The benefits I can see are variable length arguments, and the arguments >>placed don't have to be in the same order. Coming from java, I'm >>actually a little wary about this, but I sort of understand the >>usefulness, especially after reading the Rails book. >> >> > >I don't think it's common in Ruby to use Hashes for this purpose. >Usually methods have fixed parameters and you don't pass them in a >Hash. > > > >>Mage wrote: >> >> >> >>>Joe Van Dyk wrote: >>> >>> >>> >>>>On 1/23/06, Mage wrote: >>>> >>>> >>>> >>>>The second edition of the book was released two years ago or so and >>>>covers Ruby 1.8. You should read that one instead. >>>> >>>>Here's a pretty good summary of the changes in Ruby 1.8. >>>>http://whytheluckystiff.net/articles/rubyOneEightOh.html >>>> >>>> >>>> >>>> >>>Thanx. >>> >>>One of the things I don't understand are the semicolons. When I read >>>the Book, it said: >>> >>>class SomeThing >>> atrr_reader :x, :y >>>end >>> >>>I figured out that the attr_reader need to get the name of the >>>instance variables. >>> >>>However, what is this code good for? >>> >>>def make_point_hash( point ) >>> center = { :x => 1, :y => 2 } >>> big = { :r => 10 } >>> center.merge( big ).merge( point ) end >>>make_point_hash( { :x => 20 } ) >>> >>>#=> {:y=>2, :r=>10, :x=>20} >>> >>>What is that those semicolons do? >>> >>> Mage >>> >>> >>> >>> >>> >>> >>> >> >> > > >-- >R. Mark Volkmann >Partner, Object Computing, Inc. > > > >