Sto cercando di lavorare con i modificatori di accesso in Ruby. Ho:accesso ai metodi protetti in 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)
sto ottenendo l'errore "metodo protetto` confronto' chiamato per # (NoMethodError)" Ho provato a chiamare dall'interno della classe e senza. Ho incollato la versione senza qui. Ho pensato che i metodi protetti potevano essere chiamati su altri oggetti della stessa classe. Che cosa significa questo errore e come utilizzerei correttamente un metodo protetto qui? Grazie per l'aiuto.
Vedo, quindi una classe protetta e privata si differenziano solo per la protezione consente per l'uso con una sottoclasse di la classe principale, ma nessuno dei due è direttamente accessibile. Grazie mille, mi stava facendo impazzire. –