需要在数组的第一个元素的名称中创建新的数组

时间:2016-07-12 08:37:08

标签: ruby

我有一个数组

a=["ncd",0.1,0.2,0.3.0.4]

现在,我可以在没有声明变量的情况下创建一个名为ncd的数组,例如,必须以ncd的名义创建另一个数组,如

ncd=[0.1,0.2,0.3.0.4]

但我不会如上所示静态地执行此操作,我需要从数组中弹出元素并需要创建数组,

例如,我需要使用[0]创建数组,这在Ruby中是否可行?

1 个答案:

答案 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]