Ruby相当于PHP的".="(点等于)运算符

Aks*_*hat 1 ruby string concatenation

在PHP中,我们可以快速连接字符串:

$a = "b";
$a .= "c";
Run Code Online (Sandbox Code Playgroud)

返回"bc".我们如何在Ruby中做到这一点?

And*_*all 9

基本上有两种不同的方式:

  1. 连接到位<<(称为"铲"),这相当于调用concat.请注意,与Ruby中的大多数运算符一样,<<是方法调用.

    str = "foo"
    str << "bar"
    str  #=> "foobar"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 连接并分配+=:

    str = "foo"
    str += "bar"
    str  #=> "foobar"
    
    Run Code Online (Sandbox Code Playgroud)

    值得注意的是,这与以下内容相同:

    str = "foo"
    str = (str + "bar")
    
    Run Code Online (Sandbox Code Playgroud)

    这意味着以这种方式创建一个新对象,而第一种方式则不是,因为对象在适当的位置被修改.


Sir*_*ius 5

irb(main):001:0> a = "ezcezc"
=> "ezcezc"
irb(main):002:0> a << "erer"
=> "ezcezcerer"
Run Code Online (Sandbox Code Playgroud)

要么

irb(main):003:0> a += "epruneiruv"
=> "ezcezcererepruneiruv"
Run Code Online (Sandbox Code Playgroud)

  • 正确,但是`+ =`和`<<`是不同的,那是什么样的例子?ezxezc? (2认同)