Ruby的單例方法的疑惑

2021-08-30 09:20:16 字數 1046 閱讀 7850

class b

class

puts "old"

endend

endclass

def hello

puts "new"

endend

endb.hello

執行結果為new

class b

class

puts "old"

endend

endclass

def hello

puts "new"

endend

endb.hello

執行結果為old

這幾段**的作用都是開啟類b的單例類,判斷是否定義了hello方法,如果未定義,則定義這個方法,但是第一段和第二段**的執行結果大相徑庭。再看兩段**

class b

def self.hello

puts "old"

endend

class

def hello

puts "new"

endend

endb.hello

執行結果為new

class b

def self.hello

puts "old"

endend

class

def hello

puts "new"

endend

endb.hello

輸出為old

一樣的結果 百思不得其解

ruby的單例方法

begin 在ruby裡,可以給具體的例項物件新增例項方法,這個方法只屬於這個例項 物件,我們把這樣的方法稱之為單例方法。單例方法也叫作單件方法。定義單例方法,首先要生成乙個例項物件,其次,要在方法名前加上物件名和乙個點號 在下面示例中,物件p1不可以laugh laugh方法只屬於p2物件。例項方...

ruby的單例方法

begin 在ruby裡,可以給具體的例項物件新增例項方法,這個方法只屬於這個例項 物件,我們把這樣的方法稱之為單例方法。單例方法也叫作單件方法。定義單例方法,首先要生成乙個例項物件,其次,要在方法名前加上物件名和乙個點號 在下面示例中,物件p1不可以laugh laugh方法只屬於p2物件。例項方...

ruby中的單例模式

引入檔案singleton,引入模組singleton require singleton class singletontest attr accessor data include singleton enda singletontest.instance b singletontest.ins...