我有一个商店,可以直接设置如下
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)
答案 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