Noob Concatenation Q?

Can someone briefly explain why ::
puts i.to_s +" :: "+arrayoutput[i]

yaml.rb:12: undefined method `+@' for " :: ":String (NoMethodError)
        from F:/RUBY/Source/yaml.rb:11:in `times'
        from F:/RUBY/Source/yaml.rb:11

but the addition of a space => puts i.to_s + " :: "+arrayoutput[i]
results in success.

some proir exp in java and cant remember requiring spaces in
concatentation. any replies welcomed!

···

--
--------------------------------- --- -- -
Posted with NewsLeecher v3.8 Beta 6
Web @ http://www.newsleecher.com/?usenet
------------------- ----- ---- -- -

jervis@o2.ie wrote:

Can someone briefly explain why ::
puts i.to_s +" :: "+arrayoutput[i]

yaml.rb:12: undefined method `+@' for " :: ":String (NoMethodError)
        from F:/RUBY/Source/yaml.rb:11:in `times'
        from F:/RUBY/Source/yaml.rb:11

because parens in Ruby are optional, so it ends up:

puts i.to_s(+" :: "+arrayoutput[i])

lopex

I know I'm not answering your question, but
I think this is cleaner:

puts "#{ i } :: #{ array_output[i] }"

···

On May 4, 3:54 pm, jer...@o2.ie (jer...@o2.ie) wrote:

Can someone briefly explain why ::
puts i.to_s +" :: "+arrayoutput[i]

yaml.rb:12: undefined method `+@' for " :: ":String (NoMethodError)
        from F:/RUBY/Source/yaml.rb:11:in `times'
        from F:/RUBY/Source/yaml.rb:11

but the addition of a space => puts i.to_s + " :: "+arrayoutput[i]
results in success.

some proir exp in java and cant remember requiring spaces in
concatentation. any replies welcomed!

--
--------------------------------- --- -- -
Posted with NewsLeecher v3.8 Beta 6
Web @http://www.newsleecher.com/?usenet
------------------- ----- ---- -- -

Correct and then the + in
  +"::"

is being interpreted by the parser as a unary + which it implements by
sending the message :+@ to the string "::".

$ qri +@
------------------------------------------------------------- Numeric#+@
     +num => num

···

On 5/4/07, Marcin Mielżyński <lopx@gazeta.pl> wrote:

jervis@o2.ie wrote:
> Can someone briefly explain why ::
> puts i.to_s +" :: "+arrayoutput[i]
>
> yaml.rb:12: undefined method `+@' for " :: ":String (NoMethodError)
> from F:/RUBY/Source/yaml.rb:11:in `times'
> from F:/RUBY/Source/yaml.rb:11
>

because parens in Ruby are optional, so it ends up:

puts i.to_s(+" :: "+arrayoutput[i])

------------------------------------------------------------------------
     Unary Plus---Returns the receiver's value.

--
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/