Comment puis-je faire fonctionner mon code pour que l'attribut balance n'accède pas directement à la variable d'instance (je crois que c'est @balance)? Quelqu'un peut-il expliquer ce que cela signifie pour un attribut à accéder à une variable d'instance? Je suis novice dans l'utilisation de Ruby et je viens d'apprendre à connaître les classes Ruby. Dans ce chapitre, mes objectifs sont de comprendre le concept des variables d'instance, de démontrer l'utilisation des méthodes getter et setter, de comprendre comment utiliser les méthodes d'instance et de comprendre le concept d'encapsulation.Comment faire en sorte que mon attribut de classe ne puisse pas accéder directement à la variable d'instance?
class BankAccount
attr_accessor :balance
def initialize(balance)
@balance = balance
end
def withdraw(amount)
if (balance >= amount)
@balance = balance - amount
end
end
end
Supprimez simplement le 'attr_accessor' et ajoutez votre version de la méthode' balance'. –
BTW, à partir de votre code, ce n'est pas évident __at__tout, pourquoi vous voudriez que 'balance' ne lise pas' @ balance'. –
Vous distinguez "attribut d'équilibre" de "variable d'instance d'équilibre" et cette partie prête à confusion. Question de clarification: programmez-vous avec Rails, et l'attribut "balance" est-il une colonne dans une table de base de données? Sinon, comme l'a souligné @SergioTulentsev, il n'est pas évident pourquoi vous voulez qu'il y ait une distinction. Les méthodes getter et setter créées par 'attr_accessor: balance' sont SUPPOSÉES pour obtenir et définir la variable d'instance (qui est @balance). – Isaac