Private Setter in Ruby
之前在 Public, Protected and Private Method in Ruby 這篇文章提到,在 Ruby 裡使用 private 方法的時候,不能明確的指出 receiver,以下面這段範例來說:
class Dog
def hello
self.gossip
end
private
def gossip
puts "don't tell anyone!"
end
end
snoopy = Dog.new
snoopy.hello # => NoMethodError
snoopy.gossip # => NoMethodError
在上面這段程式碼的第 13 行,因為它明確的指出 receiver(snoopy),所以執行這行程式碼會出現會出現 NoMethodError
的錯誤;而在第 3 行,即使 receiver 是 self
也一樣是不行的。
這是在 Ruby 裡面 private 方法的設計。