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 上犯了什么愚蠢的错误。由于 getBalanceval,因此它不会在操作后重新计算值。不过在 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 这就是我们通常想要的。