Ruby 中的 << 和 <<= 有何不同
What is << and <<= different in Ruby
我是 Rails 上 Ruby 的新手。我知道 << operator 它在做什么,但我正在使用数据表并且我有这样的代码:
def data
items.map do |donation|
[].tap do |column|
column << donation_path(donation)
column <<= current_user.admin? ? link_to(donation.sender.name, admin_store_path(donation.sender)) : donation.sender.name
end
end
end
我尝试在 rails c 中 <<= 结果是:
irb(main):001:0> ar = []
=> []
irb(main):002:0> ar << 1
=> [1]
irb(main):003:0> ar <<= 1
=> [1, 1]
irb(main):004:0> ar <<= 2
=> [1, 1, 2]
我认为 <<= 与 << 类似,但我必须确定。
如果在Ruby中使用运算符op=,表达式
x op= y
相当于
x = x op y
在你的例子中,这意味着
a <<= b
相当于
a = a << b
但是由于 a << b
已经修改了 a
,您使用 <<=
.
没有任何好处
注意:正如评论中所指出的,这不适用于运算符 []
:如果您想要一个赋值版本,则必须明确定义 []=
。
我是 Rails 上 Ruby 的新手。我知道 << operator 它在做什么,但我正在使用数据表并且我有这样的代码:
def data
items.map do |donation|
[].tap do |column|
column << donation_path(donation)
column <<= current_user.admin? ? link_to(donation.sender.name, admin_store_path(donation.sender)) : donation.sender.name
end
end
end
我尝试在 rails c 中 <<= 结果是:
irb(main):001:0> ar = []
=> []
irb(main):002:0> ar << 1
=> [1]
irb(main):003:0> ar <<= 1
=> [1, 1]
irb(main):004:0> ar <<= 2
=> [1, 1, 2]
我认为 <<= 与 << 类似,但我必须确定。
如果在Ruby中使用运算符op=,表达式
x op= y
相当于
x = x op y
在你的例子中,这意味着
a <<= b
相当于
a = a << b
但是由于 a << b
已经修改了 a
,您使用 <<=
.
注意:正如评论中所指出的,这不适用于运算符 []
:如果您想要一个赋值版本,则必须明确定义 []=
。