Что означает «self» для, когда он находится внутри оператора «if» (или называется блоком?), Который находится внутри метода экземпляра?Ruby: Что такое «я» внутри «If» Statement of Instance Method
Я имею в виду мой код в последнем методе: «apply_discount»
Я думал, что бы получить мне @total и @discount переменные экземпляра, но это не делает так
Я предполагаю, что это утверждение «если», или, может быть, сам метод, поскольку он не делает то, что я думал.
Таким образом, в основном, как бы я получить эти переменные из моего места в «если» заявление, которое я имею в виду с помощью «я»?
Или использовать другой способ?
class CashRegister
attr_accessor :total, :discount
def initialize(discount = 0)
@total = 0
@discount = discount
end
def add_item(title, price, quantity = 0)
if quantity > 0
self.total += (price * quantity)
else
self.total += price
end
end
def apply_discount
# total = self.total
# discount = self.discount
if self.discount > 0
self.total = self.total - (self.total * (self.discount/100.0))
"After the discount, the total comes to $#{self.total}."
else
"There is no discount to apply."
end
end
end
Благодарим за помощь!
Ваш код работает или, по крайней мере, делает то, что я думаю, что вы хотите. Доступ к элементам «total» и «discount» выполняется правильно (и действительно дает вам переменные экземпляра '@ total' и' @ discount'). – Amadan
'self.total = 'должен вызывать метод' total = (some_value) 'на вашем экземпляре, который, в свою очередь (поскольку у вас есть' attr_accessor'), устанавливается значение '@ total'. Что заставляет вас сказать, что он не работает? – Max
Мои плохие парни, это, должно быть, вызывало проблемы только потому, что я еще не изменил «100.0» от 100. – Edson