在编程Ruby第二版(1.8),第124页中,有一个例子说
STR2 ="&#34 ;; str2<< 1<< 2<< 3;将产生" \ 001 \ 002 \ 003"。
我已经在irb中尝试了这个结果,但只有一次。当我再次尝试再做时,它从未发生过。任何人都可以告诉我为什么?
顺便说一下,我的环境是ruby 2.0.0p353(2013-11-22修订版43784)[x86_64-linux]
-> irb
irb(main):001:0> str2 = ""
=> ""
irb(main):002:0> str2 << 1 << 2 <<3
=> "\u0001\u0002\u0003"
irb(main):003:0> str1 = ""
=> ""
irb(main):004:0> str1 <<1
irb(main):005:0" str1
irb(main):006:0" str1 << 1
irb(main):007:0" str1
irb(main):008:0" str1 << 1 << 2
irb(main):009:0" str1
irb(main):010:0" str1 << 1 << 2 << 3
irb(main):011:0" str1
irb(main):012:0"
答案 0 :(得分:4)
您应该在<<
和1
之间添加空格。
str1 << 1
^
否则,该行被视为heredoc的开头。
答案 1 :(得分:3)
您需要在<<
运算符和1
后面加一个空格。
正如您的代码现在所示,这看起来像是heredoc。
的开头