顯式self和隱式self的區別

2021-08-30 00:14:37 字數 1421 閱讀 3172

1.

class diffself

public

def method1

puts "call method1"

enddef method2

puts "call method2"

self.method1

enddef method3

puts "call method3"

method1

endend

t=diffself.new

t.method2

#call method2

#call method1

t.method3

#call method3

#call method1

2.class diffself

private

def method1

puts "call method1"

endpublic

def method2

puts "call method2"

self.method1

enddef method3

puts "call method3"

method1

endend

t=diffself.new

t.method2

#call method2

#private method error

t.method3

#call method3

#call method1

3.

class diffself1

private

def puts(str)

"private method :#"

endpublic

def call_puts_with_self(str)

self.puts str

enddef call_puts_without_self(str)

puts str

endend

t=diffself.new

t.call_puts_without_self("hello,world!") #hello ,world!

t.call_puts_with_self("hello,world!")#private method error

結論:1.ruby的私有方法只能被隱式self呼叫,而public和protected 方法可以被顯式self和隱式self呼叫,隱式self更具靈活性。

2.隱式self如果遇到沒有的方法會按照類的類繼承和mixin的優先順序查詢直到,而顯式self不會。

mysql顯式和隱式效率 顯式與隱式SQL連線

顯式和隱式內部聯接是否存在效率差異?例如 select from table a inner join table b on a.id b.id 與select a.b.from table a,table b where a.id b.id 在mysql 5.1.51上,兩個查詢的執行計畫相同 m...

Self和self的區別

所有的trait都定義了乙個隱式的型別self,它指當前實現此介面的型別。rust官方文件當self用作函式的第乙個引數時,它等價於self self。self引數等價於self self。mut self引數等價於self mut self。方法引數中的self是一種語法糖,是方法的接收型別 例如...

顯式Intent和隱式Intent

size medium size medium 2011 09 12 09 35 顯式intent和隱式intent區別 android當中顯式intent和隱式intent的區別 定義 intent定義 intent是一種在不同元件之間傳遞的請求訊息,是應用程式發出的請求和意圖。作為乙個完整的訊息...