В других ответах предложено использовать параметр inout
, и хотя это будет работать, я бы не рекомендовал этот шаблон.Как правило, лучше избегать «побочных эффектов» в функциях и использовать inout
только в случае очень веской причины.
Более общий подход состоит в том, чтобы иметь функцию, которая return
s принимает новое значение.
Вы также можете рассмотреть возможность использования Decimal
вместо Float
при работе с валютой.
Аналогичным образом, обновление ярлыка, вероятно, не должнобыть в этой функции
func upgrade(initialPrice : Decimal) -> Decimal {
autoClicks += 1
totalClicks -= Int(truncating: initialPrice as NSDecimalNumber)
return initialPrice * 1.1
}
Затем вы можете вызвать эту функцию так:
price = upgrade(initialPrice: price)
burritoLvl1Label.text = ("$" + "\(Int(truncating:price as NSDecimal))")