Ruby 有没有更简单的方法?
带有实例变量的行能否转换为一行?是!!Ruby中总是有一个很酷的黑客!Ruby 有没有更简单的方法?,ruby,Ruby,带有实例变量的行能否转换为一行?是!!Ruby中总是有一个很酷的黑客! 之所以这样做是因为Ruby的9123特性很酷:正如它所发生的那样,NilClass实现了一个\to\u一个返回[]的方法!那有多棒 class Store def check_inventory @inventory.to_a.each { ... } end end 几乎相同,但它永远不会改变@inventory;您的代码将确保@inventory始终是一个数组。如果您需要这种行为,您可以直接将这两条线
之所以这样做是因为Ruby的9123特性很酷:正如它所发生的那样,
NilClass
实现了一个\to\u一个返回[]
的方法!那有多棒
class Store
def check_inventory
@inventory.to_a.each { ... }
end
end
几乎相同,但它永远不会改变@inventory
;您的代码将确保@inventory
始终是一个数组。如果您需要这种行为,您可以直接将这两条线结合起来:
edtq ross$ irb --prompt-mode simple
>> nil.to_a
=> []
>> @this_does_not_exist.to_a
=> []
=O Ruby从未停止让人惊讶。不过,离题:)我只是觉得很有趣,实际上有很多Ruby功能?这是第9123个功能Java是的,但是Ruby阵营分为从0开始的功能和从1开始的功能。这就像每年在RailsConf的Hatfield和McCoy……如果OP更愿意将副作用保持在最低限度:(@inventory | |[])。每个{…}@tokland:在这种情况下,我只使用。to_a
。
edtq ross$ irb --prompt-mode simple
>> nil.to_a
=> []
>> @this_does_not_exist.to_a
=> []
class Store
def check_inventory
(@inventory ||= []).each { ... }
end
end