Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 有没有更简单的方法?_Ruby - Fatal编程技术网

Ruby 有没有更简单的方法?

Ruby 有没有更简单的方法?,ruby,Ruby,带有实例变量的行能否转换为一行?是!!Ruby中总是有一个很酷的黑客! 之所以这样做是因为Ruby的9123特性很酷:正如它所发生的那样,NilClass实现了一个\to\u一个返回[]的方法!那有多棒 class Store def check_inventory @inventory.to_a.each { ... } end end 几乎相同,但它永远不会改变@inventory;您的代码将确保@inventory始终是一个数组。如果您需要这种行为,您可以直接将这两条线

带有实例变量的行能否转换为一行?

是!!Ruby中总是有一个很酷的黑客!
之所以这样做是因为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