Scala - 选项类型 Var 操作
Scala - Option Type Var Manipulation
我正在做一个练习选项和线程的在线练习,我对这两者都没有什么经验。在线练习带有一个测试套件,所以现在我正在尝试让我的选项测试用例通过,然后再继续线程测试用例。
这是我的代码:
case class BankAccount() {
def getBalance = account.balance
def incrementBalance(amount: Int): Option[Int] = {
account.balance = Some(account.balance.get + amount)
getBalance
}
// def closeAccount(): Option[Int] = {
// account.balance = None: Option[Int]
// }
}
object account {
var balance = Some(0)
}
我已将 closeAccount()
注释掉,因为它目前给我一个错误,指出它期望类型 Some[Int] instead of Option[Int]
。考虑到我如何初始化 balance
,这是可以理解的。我不确定如何从 Some[Int]
的值变为 None
,如 closeAccount()
.
中所示
如能帮助解决这个问题,我们将不胜感激。提前谢谢你。
第一次编辑:我发现我在 incrementBalance
上犯了什么愚蠢的错误。由于 getBalance
是 val
,因此它不会在操作后重新计算值。不过在 closeAccount()
上还是输了。
var balance = Some(0)
被推断为 Some[Int]
类型,当你需要明确地告诉它它是 Option[Int]
:
类型时
var balance: Option[Int] = Some(0)
然后 balance
将能够接收 Some(0)
或 None
。
顺便说一下,有时总是使用 Option(...)
而不是 Some(...)
是个好习惯。这是因为 Some(null)
会变成 Some(null)
而 Option(null)
会变成 None
这就是我们通常想要的。
我正在做一个练习选项和线程的在线练习,我对这两者都没有什么经验。在线练习带有一个测试套件,所以现在我正在尝试让我的选项测试用例通过,然后再继续线程测试用例。
这是我的代码:
case class BankAccount() {
def getBalance = account.balance
def incrementBalance(amount: Int): Option[Int] = {
account.balance = Some(account.balance.get + amount)
getBalance
}
// def closeAccount(): Option[Int] = {
// account.balance = None: Option[Int]
// }
}
object account {
var balance = Some(0)
}
我已将 closeAccount()
注释掉,因为它目前给我一个错误,指出它期望类型 Some[Int] instead of Option[Int]
。考虑到我如何初始化 balance
,这是可以理解的。我不确定如何从 Some[Int]
的值变为 None
,如 closeAccount()
.
如能帮助解决这个问题,我们将不胜感激。提前谢谢你。
第一次编辑:我发现我在 incrementBalance
上犯了什么愚蠢的错误。由于 getBalance
是 val
,因此它不会在操作后重新计算值。不过在 closeAccount()
上还是输了。
var balance = Some(0)
被推断为 Some[Int]
类型,当你需要明确地告诉它它是 Option[Int]
:
var balance: Option[Int] = Some(0)
然后 balance
将能够接收 Some(0)
或 None
。
顺便说一下,有时总是使用 Option(...)
而不是 Some(...)
是个好习惯。这是因为 Some(null)
会变成 Some(null)
而 Option(null)
会变成 None
这就是我们通常想要的。