Home > Archive > Ruby > August 2005 > Semantics of << and <<-
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
Semantics of << and <<-
|
|
| Anders Höckersten 2005-08-31, 7:00 pm |
| Hi,
I recently joined this list, so please forgive me if this question has
been asked recently. I am wondering about the precise semantics of <<
and <<-. "Programming Ruby"[1] and the pseudo-BNFs[2][3] say that you
can use a quoted string after <<. As I see it, this means I should be
able to able to use the #{expr} construct inside this string, like this:
print <<"#{2+2}"
foobar
#{4}
This is, however, not the way my installation of Ruby (1.8.1) works.
What I am wondering is, is this the expected behaviour and are both the
book and the pseudo-BNFs wrong, or is this some form of bug in the
interpreter?
Best regards,
Anders
[1] Programming Ruby, 2nd Edition, p. 321
[2] http://www.ruby-doc.org/docs/ruby-doc-
bundle/Manual/man-1.4/yacc.html
[3] http://www.ruby-lang.org/ja/man/?cm...%BB%F7BNF%A4%CB
%A4%E8%A4%EBRuby%A4%CE%CA%B8%CB%A1
| |
| Robert Klemme 2005-08-31, 7:00 pm |
| 2005/8/31, Anders H=F6ckersten <chucky@dtek.chalmers.se>:
> Hi,
> I recently joined this list, so please forgive me if this question has
> been asked recently. I am wondering about the precise semantics of <<
> and <<-. "Programming Ruby"[1] and the pseudo-BNFs[2][3] say that you
> can use a quoted string after <<. As I see it, this means I should be
> able to able to use the #{expr} construct inside this string, like this:
> print <<"#{2+2}"
> foobar
> #{4}
>=20
> This is, however, not the way my installation of Ruby (1.8.1) works.
> What I am wondering is, is this the expected behaviour and are both the
> book and the pseudo-BNFs wrong, or is this some form of bug in the
> interpreter?
My guess would be that it's an omission in the documentation. I don't
think you can do interpolation in the string. Basically it's not a
Ruby string but an idendifier and the quotation announces differnt
behaviro. After all, what do you gain by a computed terminator of a
here document? I don't think that's useful.
See http://www.ruby-doc.org/docs/ProgrammingRuby/#UD
Kind regards
robert
| |
| Robert Klemme 2005-08-31, 7:00 pm |
| 2005/8/31, Robert Klemme <shortcutter@googlemail.com>:
> 2005/8/31, Anders H=F6ckersten <chucky@dtek.chalmers.se>:
:[color=darkred]
>=20
> My guess would be that it's an omission in the documentation. I don't
> think you can do interpolation in the string. Basically it's not a
> Ruby string but an idendifier and the quotation announces differnt
> behaviro. After all, what do you gain by a computed terminator of a
> here document? I don't think that's useful.
>=20
> See http://www.ruby-doc.org/docs/ProgrammingRuby/#UD
Here's the correct link:
http://www.ruby-doc.org/docs/Progra...anguage.html#UD
| |
| William James 2005-08-31, 7:00 pm |
| Anders H=F6ckersten wrote:
> Hi,
> I recently joined this list, so please forgive me if this question has
> been asked recently. I am wondering about the precise semantics of <<
> and <<-. "Programming Ruby"[1] and the pseudo-BNFs[2][3] say that you
> can use a quoted string after <<. As I see it, this means I should be
> able to able to use the #{expr} construct inside this string, like this:
> print <<"#{2+2}"
> foobar
> #{4}
The purpose of quoting the here-document label is to make the
text be treated as though it were enclosed in single quotes.
----------------------------------------------
puts <<'HERE'
#{3**3} bells.
HERE
puts <<"HERE"
#{3**3} bells.
HERE
puts <<HERE
#{3**3} bells.
HERE
------------------------------------------------
#{3**3} bells.
27 bells.
27 bells.
|
|
|
|
|