val
-> var
Кроме того, ваши функции пополнения и снятия средств делают то же самое, поэтому я установил, что
class JointAccount (var balance: Long) {
def displayBalance = println(balance)
def withDrawl(amt: Int) = {
balance -=amt
}
def deposit(amt: Int) = {
balance +=amt
}
}
val x = new JointAccount(123L)
x.deposit(4)
x.displayBalance
Смотрите, как работает вживуюздесь
Я должен сказать, что это очень Java, а вовсе не Scala, с точки зрения того, как вы решили его реализовать. Лучшие практики Scala рекомендуют избегать изменчивых переменных и функций, которые возвращают Unit
. Вот пример переписанной версии вашего кода:
case class JointAccount (balance: Long) {
def withDrawl(amt: Int) = this.copy(balance = balance - amt)
def deposit(amt: Int) = this.copy(balance = balance + amt)
// alternative: def deposit(amt: Int) = JointAccount(balance + amt)
}
def displayBalance(ja: JointAccount) = println(ja.balance)
val x = JointAccount(123L)
displayBalance(x.deposit(4))
Посмотрите, как это работает вживую здесь
В Scala гораздо лучше иметь функции внутри классалибо верните число (в вашем случае), либо новый класс с обновленным значением.