我知道你不能做的紅寶石嵌套的方法,我想知道我可以這樣做:我可以在ruby中做submethods嗎?
attr_reader :dimensions
def dimensions.seprate
[self.dimensions[0],self.dimensions[1]]
end
,然後我可以使用它像
x,y = bar.dimensions.seprate
只是作爲一種方式在語義上指代彼此相關的輔助方法。
會這樣嗎?
ff不是在那裏做那樣的事嗎?
我知道你不能做的紅寶石嵌套的方法,我想知道我可以這樣做:我可以在ruby中做submethods嗎?
attr_reader :dimensions
def dimensions.seprate
[self.dimensions[0],self.dimensions[1]]
end
,然後我可以使用它像
x,y = bar.dimensions.seprate
只是作爲一種方式在語義上指代彼此相關的輔助方法。
會這樣嗎?
ff不是在那裏做那樣的事嗎?
由於我在評論中說過,我不明白具體的例子。但一般來說,如果你想要做obj.meth1.meth2
,那麼obj.meth1
必須返回一個名爲meth2
的方法的對象。在Ruby中沒有'context-aware'方法,因此返回值meth1
可能只有一個額外的方法,因爲它是由obj
的方法返回的。
感謝您的信息,但我已經發表了評論,這是不可能的,我問,紅寶石只是拋出錯誤。 – user2733307
將Ruby已經假設是這樣的:
x,y = arr
意思是一樣的:
x = arr[0]
y = arr[1]
所以我不認爲你做任何事情。換句話說:
x,y = bar.dimensions
如果「尺寸」的類型是不是一個數組更復雜,這可能無法正常工作,但它可能只需要到[]的方法迴應...
這是一個完全有效的方法名稱。但它不是有效的Ruby標識符。
define_method(:'dimensions.separate') do
[dimensions[0], dimensions[1]]
end
x, y = bar.send(:'dimensions.separate')
有趣的,不是我在找什麼,但有趣的是沒有。 – user2733307
你試過了嗎? –
還沒有,但我很好奇,如果它工作與否。 – user2733307
你想在這裏做什麼?如果'dimensions'是一個數組,那麼'[dimensions [0],dimensions [1]]'與'dimensions'本身沒有區別。除非它有兩個以上的元素,但是對於這個子方法來說''separate'是一個糟糕的名字。 –