以这个类为例:
class MyClass
attr_accessor :values, :uniq_values
def initialize(value)
self.uniq_values = ['default_value']
self.values = ['default_value']
copy_value(value)
add_value(value)
end
def copy_value(value)
uniq_values |= [value]
end
def add_value(value)
values << value
end
def run
puts "uniq_values: #{uniq_values}"
puts "values: #{values}"
end
end
obj = MyClass.new('poop')
obj.run
# Expect 'uniq_values' and 'values' to be the same
# OUTPUT:
# uniq_values: ["default_value"]
# values: ["default_value", "poop"]
我可以通过使用获得所需的输出self.uniq_values |= [value]
,但是我希望有必要<<
运营商也是如此。谁能解释其中的区别吗?
这不一样。
values << value
是方法调用,它调用的方法:<<
的数组。
While uniq_values |= value
只是捷径uniq_values = uniq_values | value
, here uniq_values
将被解析为局部变量。
Per the 文档:
“当解析器遇到
分配,而不是分配发生时”
and
“使用方法分配时,您必须始终有一个接收器。如果您
没有接收者 Ruby 假定您正在分配给本地
多变的”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)