On Mon, Aug 10, 2009 at 4:28 PM, Ca Josephson<cjosephson / ebscohost.com> wrote:
> I'm just learning ruby, so I am working my way through 'Why's Poignant
> Guide to Ruby'
>
> I'm on the 5th chapter, and I came across this example:
>
> class ArrayMine < Array
>   # Build a string from this array, formatting each entry
>   # then joining them together.
>   def join( sep = $,, format = "%s" )
>     collect do |item|
>       sprintf( format, item )
>     end.join( sep )
>   end
>  end
>
> An example of the method in action:
>
>  rooms = ArrayMine[3, 4, 6]
>  print "We have " + rooms.join( ", ", "%d bed" ) + " rooms available."
>
> Which prints, "We have 3 bed, 4 bed, 6 bed rooms available."
>
> I'm confused by the line "def join( sep = $,, format = "%s" )". What on
> earth is going on with the parameters? What do the  sep = $, and format
> = "%s" do? If I modify that line to "def join( sep, format)", the same
> thing prints out. So why are $, and %s used? What do they do?
> --
> Posted via http://www.ruby-forum.com/.
>
>
This is rather a hint than an answer, if you want a more explicit
answer do not hesitate to ask again:
irb(main):004:0> def a sep=",", format="*"
irb(main):005:1>  p [ sep, format ]
irb(main):006:1> end
=> nil
irb(main):007:0> a 41, 42
[41, 42]
=> [41, 42]
irb(main):008:0> a 41
[41, "*"]
=> [41, "*"]
irb(main):009:0> a
[",", "*"]
=> [",", "*"]

HTH
Robert


-- 
module Kernel
  alias_method : :lambda
end