如何将字符串附加到存在与否的变量?
我的解决方案就像
if (not (defined?(@results).nil?)) @results += "run" else @results = "run" end
但我相信有一些更简单的东西……
我可能会这样做:
@results = @results.to_s + "run"
这是有效的,因为NilClass
定义了一个返回零长度String的#to_s
方法,并且因为实例变量自动初始化为nil。
你是对的:
(@results ||= "") << "run"
澄清a || b
a || b
是a ? a : b
a ? a : b
,意思是它试图使用值a
如果a
是“truthy”(不是false或nil),但是如果a
是“falsey”则使用b
。 因此,如果变量为nil,则使用||=
仅更新变量。 然后, <<
追加字符串。