Ruby 如何获取对';动态';对象调用?

Ruby 如何获取对';动态';对象调用?,ruby,arrays,Ruby,Arrays,嗯,我的问题不是很清楚,但我想做的是: average = [1, 2, 3].inject(0) { |sum, el| sum + el } / this.size 上面的代码不起作用,因为对this的调用很荒谬,但我想实现的是获取对我正在调用的数组的引用。(在本例中[1,2,3]),考虑到我对ruby的无知,我使用了this。但是,你能告诉我怎么做才对吗? 在没有变量引用的情况下,是否有可能执行此操作 提前谢谢 ruby中没有这一点,最近的东西是self 这里有一些例子可以帮助你在路上

嗯,我的问题不是很清楚,但我想做的是:

average = [1, 2, 3].inject(0) { |sum, el| sum + el } / this.size
上面的代码不起作用,因为对this的调用很荒谬,但我想实现的是获取对我正在调用的数组的引用。(在本例中[1,2,3]),考虑到我对ruby的无知,我使用了this。但是,你能告诉我怎么做才对吗? 在没有变量引用的情况下,是否有可能执行此操作


提前谢谢

ruby中没有这一点,最近的东西是self

这里有一些例子可以帮助你在路上

#example 1 not self needed numbers is the array

numbers = [1, 2, 3]

numbers.reduce(:+).to_f / numbers.size

# example 2 using tap which gives access to self and returns self
# hence why total variable is needed

total = 0
[1, 2, 3].tap {|a| total = a.reduce(:+).to_f / a.size }

# instance_eval hack which accesses self, and the block after do is an expression 
# can return the average without an extra variable

[1, 2, 3].instance_eval { self.reduce(:+).to_f / self.size } # => 2.0

到目前为止,我更喜欢示例1,因为“this”没有引用数组,所以根本不起作用。我认为不可能像您声明的那样获得对数组的引用。但是您永远不会遇到这样的问题,因为如果数组是这样硬连接到代码中的,那么除数也可能是这样,所以您可以在末尾写“/3”

在一般情况下,如果您有一个大小未知的数组,那么您也会有一个数组的名称,因此可以使用该名称。比如:

a = [1, 2, 3]
average = a.inject(0) {|sum, el| sum+el} / a.size

是的。。。但他希望它没有变量引用。这是主要要求……卢卡佩特是对的。我玩Ruby是为了更好地使用它,我想知道我是否可以按照我描述的方式来做。谢谢嗯,在你最近的例子中,表达式返回一个数组,而不是平均计算的浮点值。user766388是的,但它将total设置为Too。如果你真的是一个Ruby初学者,那么尝试学习像这样复杂的代码是没有意义的,IMHOSo,简单的回答是Ruby没有这样的功能?我同意无论如何我肯定不会需要它。我只是想知道这种语言是否有语法。可能相关: