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 方法的設計。



