Scala 需要帮助来修复代码中的一个问题
我已经为测试目的编写了一些小代码。但这是一个错误。但不知道为什么? 有人能帮我吗Scala 需要帮助来修复代码中的一个问题,scala,Scala,我已经为测试目的编写了一些小代码。但这是一个错误。但不知道为什么? 有人能帮我吗 class JointAccount (val balance: Long) { def displayBalance = println(balance) def withDrawl(amt: Int) = { balance -=amt } def deposit(amt: Int) = { balance -=amt } } 错误是 错误:';'预期def但发现def取款(金额:
class JointAccount (val balance: Long) {
def displayBalance = println(balance)
def withDrawl(amt: Int) = {
balance -=amt
}
def deposit(amt: Int) = {
balance -=amt
}
}
错误是
错误:';'预期def但发现def取款(金额:整数)={
提前感谢。您正试图修改一个不可变变量(
balance
),正如cchantep告诉您的那样
下面是一个可以让您开始学习的简单示例:
// Start writing your ScalaFiddle code here
case class JointAccount (balance: Long) {
def displayBalance = println(balance)
def withDrawl(amt: Int) = JointAccount(balance - amt)
def deposit(amt: Int) = JointAccount(balance + amt)
}
val a = JointAccount(1000)
println(a)
a.displayBalance
val b = (a withDrawl 500) deposit 500
println(b)
您可以在这里玩它
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最佳实践建议避免返回单元的可变变量和函数。以下是代码的重新编写版本示例:
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中,类中的函数最好返回一个数字(在您的情况下)或一个具有更新值的新类。语法正确吗?为什么有这些**
?嗨,这个程序中没有**。可能是自动生成的。我强烈建议您首先阅读一本基础教程(val
是不可变的,没有为函数定义返回类型,无用的;
,…)。错误是什么-请将它添加到问题中。我认为存款
应该是余额+=amt
(如果余额
当然是var
)谢谢你的帮助。我已经尝试了val和var。但是,它是错误的。你是如何尝试的?上面的代码编译并打印结果。我在谈论我的代码时发现了错误。CanThanks James为我提供了解决方案和有价值的建议