我需要将传入的参数(单个对象或集合)转换为Array.我不知道论点是什么.如果它已经是一个数组,我想留下它,否则从它创建一个单元素数组.我想要允许method(:objs => obj)
和method(:objs => [obj1, obj2])
这似乎是最好的方法(Array#to_a返回self):
arg = arg.to_a
但红宝石文档说Object#to_a
很快就会过时了.有方便的更换吗?
还有比这更简洁的东西吗?
arg = arg.respond_to?(:to_a) ? arg.to_a : [arg]
Grant Hutchi.. 45
使用方法Kernel#Array:
Array([1,2,3]) #=> [1, 2, 3] Array(123) #=> [123]
是的,它起初可能看起来像一个类,但这实际上是一个以大写字母开头的方法.
使用方法Kernel#Array:
Array([1,2,3]) #=> [1, 2, 3] Array(123) #=> [123]
是的,它起初可能看起来像一个类,但这实际上是一个以大写字母开头的方法.
哇,有人只是暗示了一个非常古老的线索.:-O但是因为我还没有看到它包含在内,所以我将为完整性添加一条方法:
arg = [*arg]
如果它已经是一个数组(因此删除了一个嵌套级别)或者创建一个参数数组,这将抛出该参数:否则:
arg = [1,2,3] [*arg] #=> [1, 2, 3] arg = 1 [*arg] #=> [1]