如何在Ruby中连接字节

时间:2014-05-12 12:48:07

标签: ruby string byte concatenation

在编程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" 

2 个答案:

答案 0 :(得分:4)

您应该在<<1之间添加空格。

str1 << 1
       ^

否则,该行被视为heredoc的开头。

答案 1 :(得分:3)

您需要在<<运算符和1后面加一个空格。

正如您的代码现在所示,这看起来像是heredoc

的开头