我有一个数组
a=["ncd",0.1,0.2,0.3.0.4]
现在,我可以在没有声明变量的情况下创建一个名为ncd的数组,例如,必须以ncd的名义创建另一个数组,如
ncd=[0.1,0.2,0.3.0.4]
但我不会如上所示静态地执行此操作,我需要从数组中弹出元素并需要创建数组,
例如,我需要使用[0]创建数组,这在Ruby中是否可行?
答案 0 :(得分:3)
我建议你有一个哈希
a = { "ncd" => [0.1,0.2,0.3.0.4] }
或者如果您有一些像这样的数组
a = [['ncd1', 0.1,0.2,0.3,0.4], ['ncd2', 0.1,0.2,0.3,0.4]]
您可以使用某种方法来获取动态值
def dynamic(ar)
ar.each_with_object({}) do |el, hash|
hash[el.first] = el[1..-1]
end
end
dynamic a
#=> {"ncd1"=>[0.1, 0.2, 0.3, 0.4], "ncd2"=>[0.1, 0.2, 0.3, 0.4]}
然后
dynamic(a)['ncd1']
#=> [0.1, 0.2, 0.3, 0.4]
但这看起来像ruby中的某种丑陋语法。
更新1
将密钥作为第二个参数传递可能不那么难看,即
def dynamic(ar, key)
ar.each_with_object({}) do |el, hash|
hash[el.first] = el[1..-1]
end[key]
end
dynamic a, 'ncd1'
由你决定。
更新2
我忘记了...... 您可以el.drop(1)
代替el[1..-1]