我正在爲紅寶石寶石寫一些測試...如何檢查對象是否有respond_to? MyObject#attr_reader:my_property但不是setter
如何檢查對象是否有respond_to? MyObject#attr_reader:my_property但不MyObject#attr_writer:my_property或MyObject#my_property(value)#< = setter?
大量的例子只是檢查一切,但。有任何想法嗎?
我正在爲紅寶石寶石寫一些測試...如何檢查對象是否有respond_to? MyObject#attr_reader:my_property但不是setter
如何檢查對象是否有respond_to? MyObject#attr_reader:my_property但不MyObject#attr_writer:my_property或MyObject#my_property(value)#< = setter?
大量的例子只是檢查一切,但。有任何想法嗎?
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方法已設置。
檢查吸氣劑: my_object.respond_to? :the_property
檢查二傳手: my_object.respond_to? :the_property =