有人問是否可以定義一個需要多個參數的setter方法,但是搜索它似乎是不可能的。如何使用不帶參數的setter方法
我說,setter方法不能採取一個以上的說法,但後來仔細想想,想知道我是否比不帶任何參數實際上可以定義一個setter:
class Test
def self.args=
end
end
和Ruby接受它,可能原因沒有理由不接受它。我可以用它做任何事情嗎?
有人問是否可以定義一個需要多個參數的setter方法,但是搜索它似乎是不可能的。如何使用不帶參數的setter方法
我說,setter方法不能採取一個以上的說法,但後來仔細想想,想知道我是否比不帶任何參數實際上可以定義一個setter:
class Test
def self.args=
end
end
和Ruby接受它,可能原因沒有理由不接受它。我可以用它做任何事情嗎?
你不能用它作爲setter,它甚至不是非常有用的方法。甚至使該方法運行的唯一方法是使用send
或創建一個Method實例,因爲正常的消息發送語法不允許消息包含「=」字符。
所以,你在技術上可以有這樣的代碼:
class Foo
def bar=()
puts "Hi, mom!"
end
end
foo = Foo.new
foo.send(:bar=)
,它會打印出「嗨,媽媽!」如預期。
但你能用它做什麼嗎?那麼,我想你可以向你的所有朋友吹噓你的不可置信的二傳手,它沒有設置任何東西。除此之外,不,對任何事情都沒有用處。
你可以做任何其他沒有參數的實例方法。如果你在=
運營商的範圍內調用它,那麼我認爲你不能通過它的一個塊,但你可以通過它與send
一起通過塊。
但是請注意,您的示例在單例類中定義了setter方法,而setter方法通常定義爲實例方法。