看到乙個人這樣用module,讓我迷糊了半天
ruby **
module m
def module_method
endextend self
end
我瞅了半天那個extend self,心想,難道這樣子不會引起迴圈麼?每次碰到這句話都給自己建乙個單件類,然後在單件類中include m,到了include m的時候又要碰到extend self,然後給這個單件類再建乙個單件類,繼續include。。。無限迴圈?
但是把上述**寫了一下發現,這個extend self在m的單件類中根本沒有執行?因為我對extend和include的實現不太清楚,只能猜想,在include和extend的時候,只有「方法的定義」會被執行,類似於變數定義,表示式求值,方法呼叫等等統統忽略,只有這樣,才能符合上述現象。猜了半天,找不到頭緒。回家看看ruby源**。
類方法和例項方法?
筆試中遇到都最最基礎的問題,我竟然有點懵了。首先沒弄清楚什麼是類方法,什麼是例項方法,現在就做乙個總結。類中的方法分為類方法和例項方法。類方法 類中用 static 修飾的方法。例項方法 也稱為物件方法,除了類方法都是例項方法。類方法在類被 jvm 虛擬機器載入進記憶體的時候就會為其分配入口位址,例...
例項變數和類變數 類方法和例項方法
類體中包括成員變數和區域性變數,而成員變數又可以細分為例項變數和類變數,在宣告成員變數的時候,用static給予修飾的稱作類變數,否則稱作例項變數。類變數也稱為static變數,靜態變數 那麼,類變數和例項變數有什麼區別呢?我們知道,乙個類通過使用new運算子可以建立多個不同的物件,這些物件將被分配...
例項方法,類方法和物件方法
class a num 10 def hehe self print 我是例項方法 也叫物件方法 classmethod def haha cls print 我是類方法,我的第乙個引數代表的是類,例如本例是a cls.num staticmethod def heihei print 我是靜態方法...