Scala - 选项类型Var操作

时间:2015-06-23 15:38:52

标签: scala scala-option

我正在进行练习选项和线程的在线练习,这两点我都很少有经验。在线练习附带一个测试套件,所以现在我试图让我的Option测试用例在我进入线程测试用例之前通过。

这是我的代码:

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()

任何帮助都会在获得这个问题时受到赞赏。提前谢谢。

First Edit:我弄清楚我用incrementBalance犯了什么愚蠢的错误。由于getBalanceval,因此在操作后不会重新计算该值。但仍然遗失在closeAccount()上。

1 个答案:

答案 0 :(得分:3)

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这是我们通常想要的。