簡體   English   中英

在類定義中的方法名稱中明確使用`self`

[英]Explicit use of `self` in method name in class definition

這段代碼來自Rails Crash課程書:

class Accessor
  def self.accessor(attr)
    class_eval "
      def #{attr}
        @#{attr}
      end

      def #{attr}=(val)
        @#{attr} = val
      end
    "
  end
end

這個想法是, Accessor的子類可以通過使用屬性名稱調用accessor方法來創建獲取器和設置器方法,我們希望為其生成獲取器和設置器方法的屬性名稱:

class Element < Accessor
  accessor :name
...

但是,為什么在def self.accessor(attr)使用self

因為您想為一個類的所有實例定義訪問器; 您不想為某些實例定義它們,也不想為其他實例定義它們。 因此,定義訪問器是您要針對類而不是實例執行的操作; 因此accessor必須是類方法,而不是實例方法。 使用時將在類主體中調用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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