簡體   English   中英

“#[](參數)”如何工作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM