這個問題關於Ruby中的setter和getter方法。在下面的例子中,我有三種方法。前兩個分別是獲取和設置實例變量@login_method
。第三種是嘗試訪問setter方法的實例方法。它無法訪問setter方法,因爲當行login_method = 15
運行時,對於放置在setter方法內的調試器語句,執行不會停止。 爲什麼我不能從方法mymeth
中訪問setter方法?如果我將setter方法調用與「self」作爲前綴,我可以訪問它,但爲什麼我必須這樣做?如何從Ruby對象實例中的實例方法訪問setter和getter方法?
require 'byebug'
class MyClass
def login_method
debugger;
@login_method
end
def login_method=(value)
debugger;
@login_method
end
def mymeth
debugger;
login_method = 15
end
end
obj = MyClass.new
obj.mymeth
從[分配方法](http://ruby-doc.org/core-2.3.1/doc/syntax/assignment_rdoc.html#label-Assignment+Methods):_「當使用方法分配時,你必須始終有一個接收器,如果你沒有接收器,Ruby假定你正在分配給一個局部變量「_ – Stefan