Feature #5352

How about using <> to represent Here Document?

Added by Joey Zhou almost 4 years ago. Updated almost 3 years ago.

[ruby-core:39672]
Status:Assigned
Priority:Normal
Assignee:Yukihiro Matsumoto

Description

"<<" is a frequently used method in text manipulation. Meanwhile, it's also the beginning token of a here-document.
Sometimes it may be confusing to newbies.

Unlike Perl, in which "<>" is a very very frequently used operator to read lines from a filehandle, in Ruby, "<>" has no meaning. So I think it can be used to represent Here Document, so as to reduce the possibility of misunderstanding method "<<" and here-document token "<<". And In my opinion, <> is more clear than <<, because it looks like kind of brackets.

For example,

str = .upcase + .downcase
aaaaaa
SECT1
XXXXXX
SECT2

may be clearer than:

str = <<SECT1.upcase + <<SECT2.downcase

History

#1 Updated by Martin Dürst almost 4 years ago

If anything is done in this direction, I'd prefer
str = <>SECT1.upcase + <>SECT2.downcase
over
str = .upcase + .downcase
It seems to stick out much better.

#2 Updated by Anurag Priyam almost 4 years ago

On Fri, Sep 23, 2011 at 7:08 AM, Martin Dürst duerst@it.aoyama.ac.jp wrote:
[...]

If anything is done in this direction, I'd prefer
  str

#3 Updated by Nobuyoshi Nakada almost 4 years ago

Joey Zhou wrote:

Unlike Perl, in which "<>" is a very very frequently used operator to read lines from a filehandle, in Ruby, "<>" has no meaning. So I think it can be used to represent Here Document, so as to reduce the possibility of misunderstanding method "<<" and here-document token "<<". And In my opinion, <> is more clear than <<, because it looks like kind of brackets.

I'm somewhat negative.
It looks like Perl's "<>" but is pretty different, so I'm afraid that it would be also confusing.

#4 Updated by Joey Zhou almost 4 years ago

Nobuyoshi Nakada wrote:

I'm somewhat negative.
It looks like Perl's "<>" but is pretty different, so I'm afraid that it would be also confusing.

There are a few things different in Ruby and Perl.

$foo is not a scalar, @bar is not an array, %w is not a hash

"re = /pattern/" in Ruby means assigning a regexp to re, but in Perl "$re = /pattern/" means "$re = $_ =~ /pattern/"...

So I think the difference is not a problem, some differences already exist.

"<<" of Perl has two meanings: shifting bits and here document. One is for the integers and the other is for the string, maybe leading to less confusing. However, in Ruby, "<<" is instance method of String and IO/File, and here document is also string, the probability of confusing is larger, I'm afraid.

#5 Updated by Yusuke Endoh over 3 years ago

  • Status changed from Open to Assigned
  • Assignee set to Yukihiro Matsumoto

#6 Updated by Yusuke Endoh almost 3 years ago

  • Target version set to Next Major

Also available in: Atom PDF