irb(main):006:0> puts("foo"
irb(main):007:1> "bar")
SyntaxError: compile error
(irb):7: syntax error
"bar")
^
(irb):7: syntax error
from (irb):7
What I find even more wierd is this warning:
irb(main):001:0> $-v=1
=> 1
irb(main):002:0> puts(("foo"
irb(main):003:2> "bar"))
(irb):2: warning: unused literal ignored
bar
=> nil
ambrus
I'm not sure what's so weird about that... Putting a newline between
the strings makes them into two separate statements, ruining the
concatenation. The statement above is functionally the same as this:
puts(("foo";"bar"))
With the two string literals being in separate statements, ruby sees
no link between the two statements, so the first literal gets created,
then ignored. With a continued line, or explicit concatenation, it
should and does work.
As for the SyntaxError in the OP's message, this is (apparently)
because ruby sees it as two statements, and you can't have more than
one statement inside the method call parens. Doubling up on them
("puts((foo; bar))" cancels that out.
cheers,
Mark
···
On Thu, 23 Dec 2004 01:03:55 +0900, Zsban Ambrus <ambrus@math.bme.hu> wrote:
> irb(main):006:0> puts("foo"
> irb(main):007:1> "bar")
> SyntaxError: compile error
> (irb):7: syntax error
> "bar")
> ^
> (irb):7: syntax error
> from (irb):7
What I find even more wierd is this warning:
irb(main):001:0> $-v=1
=> 1
irb(main):002:0> puts(("foo"
irb(main):003:2> "bar"))
(irb):2: warning: unused literal ignored
bar
=> nil
The statement above is functionally the same as this:
puts(("foo";"bar"))
Indeed
As for the SyntaxError in the OP's message, this is (apparently)
because ruby sees it as two statements, and you can't have more than
one statement inside the method call parens.
So that's for the same reason why this
puts(3+
8)
works, but this
puts(3
+8)
does not.
Thx for explainig.
ambrus
···
On Thu, Dec 23, 2004 at 02:20:40AM +0900, Mark Hubbart wrote: