将数组映射到方法的连续非零值?

时间:2012-07-25 01:24:28

标签: ruby

所以,我有x个变量名称,我想从方法中分配给x个连续的非nil值...我该怎么做?

例如,我想将%w[alpha beta gamma]映射到以0开头的函数nil的三个连续非get(x)值。

因此,假设get(x)的值为get(0)=1get(1)=54get(2)=nilget(3)=6。我想要alpha = 1beta = 54gamma = 6

我该怎么做?

1 个答案:

答案 0 :(得分:1)

设置哈希键/值对可能无法真正回答问题,但对于真正的程序来说,它几乎总是正确的解决方案......

def get x # test sub
  [1, 54, nil, 6][x]
end

# find the next n non-nil values of an integer function
def find n, sofar, nextval
  return sofar if sofar.length >= n
  return find n, (sofar << get(nextval)).compact, nextval + 1
end

h = {}
h[:alpha], h[:beta], h[:gamma] = find 3, [], 0
p h