我的解决方案就像
if (not (defined?(@results).nil?))
@results += "run"
else
@results = "run"
end
但我相信有更简单的事情......
答案 0 :(得分:24)
我可能会这样做:
@results = @results.to_s + "run"
这是有效的,因为NilClass
定义了一个返回零长度String的#to_s
方法,因为实例变量会自动初始化为nil。
答案 1 :(得分:12)
你是对的:
(@results ||= "") << "run"
要澄清一点,a || b
是a ? a : b
,这意味着如果a
是“真实的”(非假或零),它会尝试使用值a
但是使用{ {1}}如果b
为“falsey”。因此,如果变量为nil,则仅使用a
更新变量。然后,||=
附加字符串。