如何存储多维数组值

时间:2017-08-18 08:41:49

标签: ruby-on-rails ruby

我有一个商店,可以直接设置如下

self.xxx_bias_store[i][j] = [7,11]

其中xxx可以是不同的名称

如何使用send设置此项。我试过了

self.send("#{name}_biases_store[#{i}][#{j}]=".to_sym, [7,11])

但这没有效果。也对如何检索价值感兴趣,即

send("#{name}_biases_store[#{i}][#{j}]".to_sym)

2 个答案:

答案 0 :(得分:1)

我不太确定为什么你会尝试使用发送这个,看看你的评论我不相信你实际上是在问正确的问题但不管怎么说,这里和#39;这是如何运作的。

您关注的方法如下:

class Array
  def [](index)
    # Look up the element of the array at index
  end

  def []=(index, value)
    # Set the element of the array at index to value
  end
end

thing[5]使用参数[]调用5方法 - 也就是说,它使用参数{{1}将方法[]发送到接收方thing }}。同样,5使用参数thing[5]=1[]=

调用5方法

多维数组只是一个由其他数组组成的数组,所以......

1

答案 1 :(得分:1)

  

send("biases_store[#{i}][#{j}]".to_sym)

您的错误,认为biases_store[i][j]是一个很长的复杂方法名称。不是。 biases_store是一种返回内容的方法。然后在该值上调用方法[],这将获得另一个对象。您再次调用方法[]

dynamic_property_name = 'biases_store'
send(dynamic_property_name)[i][j] = whatever

或者,相同的代码重新排列以便于理解

store = send('biases_store')
store[i][j] = whatever