好吧,我的問題不是很清楚,但我想要做的是以下幾點:如何獲得對「動態」對象調用的引用?
average = [1, 2, 3].inject(0) { |sum, el| sum + el }/this.size
上面的代碼不會因爲荒謬調用這個的工作,但我想完成就是獲得對我要調用的數組的引用。 (在這種情況下[1,2,3]),鑑於我對Ruby的無知,我使用了這個。但是,你能告訴我怎麼做對嗎? 是否有可能在沒有變量引用的情況下執行它?
在此先感謝!
好吧,我的問題不是很清楚,但我想要做的是以下幾點:如何獲得對「動態」對象調用的引用?
average = [1, 2, 3].inject(0) { |sum, el| sum + el }/this.size
上面的代碼不會因爲荒謬調用這個的工作,但我想完成就是獲得對我要調用的數組的引用。 (在這種情況下[1,2,3]),鑑於我對Ruby的無知,我使用了這個。但是,你能告訴我怎麼做對嗎? 是否有可能在沒有變量引用的情況下執行它?
在此先感謝!
紅寶石裏沒有這個最近的東西是自我。
這裏有一些例子來幫助你的方式
#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
「這個」不引用數組,這樣就不會在所有的工作。我認爲不可能像你聲明的那樣獲得對數組的引用。但是你永遠不會遇到這樣的問題,因爲如果數組被硬連線到這樣的代碼中,那麼除數也可能是太多,所以你可以在最後寫'/ 3'。
在一般情況下,你有一個未知大小的數組,你也可以爲數組命名,所以你可以使用它。像:
a = [1, 2, 3]
average = a.inject(0) {|sum, el| sum+el}/a.size
所以,簡單的回答是,ruby沒有這樣的能力? 我同意我肯定不會需要它。我只是想知道該語言是否有語法。 – jlstr
可能與:http://stackoverflow.com/questions/4341161/is-there-a-ruby-method-that-just-returns-the-value-of-a-block –