Ruby on rails 如何存储多维数组值

Ruby on rails 如何存储多维数组值,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个商店,可以直接设置如下 self.xxx_bias_store[i][j] = [7,11] 其中xxx可以是不同的名称 如何使用“发送”设置此设置。我试过了 self.send("#{name}_biases_store[#{i}][#{j}]=".to_sym, [7,11]) 但这没有效果。还对如何检索值感兴趣,即 send("#{name}_biases_store[#{i}][#{j}]".to_sym) 我不太清楚你为什么要用send来做这个,看你的评论,我不相信你问的

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

self.xxx_bias_store[i][j] = [7,11]
其中xxx可以是不同的名称

如何使用“发送”设置此设置。我试过了

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

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

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

我不太清楚你为什么要用send来做这个,看你的评论,我不相信你问的问题是对的,但不管怎样,这是怎么回事

您关心的方法如下所示:

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
——也就是说,它将方法
[]
发送给带参数的接收者
thing
。类似地,
thing[5]=1
使用参数
5
1
调用
[]=
方法

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

thing = [[1,2], [3,4]]
p thing.send(:[], 1) # => [3,4]
p thing.send(:[], 1).send(:[], 0) # => 3
thing.send(:[], 1).send(:[]=, 0, 5)
p thing # => [[1,2], [5,4]]
send(“biases#u store[#{i}][#{j}]”。发送到#sym)

这是您的错误,认为
偏向于存储[i][j]
是一个很长的复杂方法名。不是
biases\u store
是一种返回某些内容的方法。然后对该值调用方法
[]
,从而获得另一个对象。再次调用方法
[]

dynamic_property_name = 'biases_store'
send(dynamic_property_name)[i][j] = whatever
或者,重新排列相同的代码以便于理解

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

为什么要使用
send
?“=>
bias\u store[i][j]
?…因为我简化了这个问题,存储的名称可以动态变化,所以它看起来更像
self.send(“{name}{bias\u store[{i}][{j}]=”。到[7,11])
。检索看起来像
send(“#{name}u bias_store[#{i}][#{j}]=”.to_sym)
。但是,{{Ne}}部分不是问题,而不是动态变量名,应该考虑将它们作为哈希键。这将极大地简化您的代码。您是对的,这就是我最后所做的。用两行代码可能更容易做到:
store=send(name)
store[I][j]=value
(即更容易理解)