Semantics of << and <<-

A

Anders Höckersten

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/?cmd=view;name=%B5%BF%BB%F7BNF%A4%CB
%A4%E8%A4%EBRuby%A4%CE%CA%B8%CB%A1
 
R

Robert Klemme

2005/8/31 said:
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
 
R

Robert Klemme

2005/8/31 said:
2005/8/31 said:
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?
=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/ProgrammingRuby/html/language.html#UD
 
W

William James

Anders said:
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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,043
Latest member
CannalabsCBDReview

Latest Threads

Top