[英]How does '#[](argument)' work?
我遇到了以下代碼:
class Duration
def self.[](magnitude)
...
end
end
我可以執行以下操作:
Duration.[]("2 weeks")
以及這個:
Duration["2 weeks"]
我在[ ]
放入的"2 weeks"
值如何作為方法的參數傳遞?
在@Nabin Paudyal答案的評論中回答您的問題。 線
def self.[](magnitude)
在class Duration
body表示英語(紅寶石味):
“打開對象Duration
的單例類,並為其添加對象的“實例方法”(在本例中為Class
類的對象-命名為Duration
)”
通常看起來應該像這樣:
def self.method_name(arguments)
之后,您可以這樣稱呼它:
object.method_name(arguments)
在您的情況下,對象的名稱為Duration
(一個類),方法的名稱為[]
。 因此,調用應如下所示:
Duration.[](argument)
換句話說,你是完全正確的。 這是“調用某種方法”。
這是因為Ruby語言是按照這種方式設計的。
讓我們來看下面的例子。
array = [1, 2, 3, 4, 5]
在此,以下兩個代碼產生相同的結果。
puts array[2]
puts array.[](2)
Ruby的Array類具有以下方法
[](index)
此方法返回指定索引處的元素。
array[2]
也被解釋為
array.[](2)
在計算結果之前。
希望這對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.