我正在尝试弄清楚Ruby中的访问修饰符。 我有:
class Person
def initialize (first_name, last_name, age)
@first_name=first_name
@last_name=last_name
@age=age
end
def show()
puts @first_name
puts @last_name
puts @age
end
protected
def compare(other)
self.instance_variable_get(:@age)<=>other.instance_variable_get(:@age)
end
end
p1=Person.new("Some", "Body", "99")
p1.show
puts "\n"
p2=Person.new("Who", "Ever", "21")
p2.show
puts "\n"
p1.compare(p2)
我遇到了一个错误,提示 "protected method `compare' called for #(NoMethodError)"。
我已经尝试在类内外进行调用。我在这里粘贴了没有调用的版本。我以为受保护的方法可以在同一类的其他对象上被调用。这个错误是什么意思?我应该如何正确使用受保护的方法?谢谢你的帮助。