Je suis en train d'écrire une classe Ruby et je souhaite remplacer la méthode ==. Je veux dire quelque chose comme:Création d'une méthode égale sans avoir à rendre public les champs privés
class ReminderTimingInfo
attr_reader :times, :frequencies #don't want these to exist
def initialize(times, frequencies)
@times, @frequencies = times, frequencies
end
...
def ==(other)
@times == other.times and @frequencies == other.frequencies
end
end
Comment puis-je faire cela sans faire deux fois et les fréquences visibles publiquement?
SUIVI:
class ReminderTimingInfo
def initialize(times, frequencies)
@date_times, @frequencies = times, frequencies
end
...
def ==(other)
@date_times == other.times and @frequencies == other.frequencies
end
protected
attr_reader :date_times, :frequencies
end
N'est-ce pas le point de getters? – NullUserException
ne signifie pas d'upvote votre commentaire, hehe. Je dirais que les getters sont quelque chose à éviter à tout prix. Ce serait bien s'il y avait une forme d'accès protégé ou quelque chose ... Hmmm peut-être qu'il y en a. –
L'état de l'objet doit être aussi privé que possible. Tout ce dont l'utilisateur n'a pas besoin pour passer commande à l'objet doit être invisible pour l'utilisateur. –