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
(即更容易理解)