即使在不必要的情況下顯式指定方法目標時,Ruby中是否存在最佳實踐?在Ruby中明確指定默認方法目標?
class Foo
def meth1
puts "bar"
end
def meth2
# is this better?
self.meth1
# or this?
meth1
end
end
即使在不必要的情況下顯式指定方法目標時,Ruby中是否存在最佳實踐?在Ruby中明確指定默認方法目標?
class Foo
def meth1
puts "bar"
end
def meth2
# is this better?
self.meth1
# or this?
meth1
end
end
不,這只是一個風格問題。
唯一要記住的是,你總是必須爲setter方法指定一個目標。
foo_count = 4 #creates a local variable named foo_count and sets it to 4
self.foo_count = 4 #sends foo_count=(4) to self
同樣的規則,如果你碰巧有相同名稱的局部變量作爲類的方法,但我要說的是,這本身就是一個不好的做法適用。
正如查克先前所說,這主要是一個風格問題,除了他指出的情況以及使用私人方法時。任何時候您從對象中使用私有方法時,都必須離開self.
業務。
例如:
class Tze
def meth2
meth1
end
def meth3
self.meth1
end
private
def meth1
puts "method 1 invoked"
end
end
調用Tze.new.meth2
產生預期的輸出;然而,由於meth1
被調用爲self.meth1
,因此調用Tze.new.meth3
會產生錯誤。
雖然安裝人員不受此規定限制。儘管'x ='是一種私有方法,'self.x = 5'仍然有效 – horseyguy 2009-12-11 04:36:40
感謝您的簡要解釋。 – 2009-12-10 21:17:45