2013-05-02 59 views

回答

3

attr_reader :my_property

def my_property 
    @my_property 
end 

同樣基本上語法糖,attr_writer :my_property

def my_property=(val) 
    @my_property = val 
end 

。注意,通過attr_writer定義的方法與端部和等號速記;這意味着obj.my_property = foo被解釋爲obj.my_property=(foo);這是setter如何在ruby中定義的,而getter只是不帶參數並返回值的方法。

那麼,回到原來的問題。如果obj.respond_to? :my_property返回true,則表示其吸氣劑已設置。 (請注意,因爲getter只是普通的方法,所以不能確定該方法實際上是一個getter還是某種完全不相關的方法)。同樣,如果obj.respond_to? :my_property=返回true,則表示setter方法已設置。

2

檢查吸氣劑: my_object.respond_to? :the_property

檢查二傳手: my_object.respond_to? :the_property =