0

フィルターの条件が満たされない場合に回復が空の成功を返す理由がわかりません

case class Account(acctNum: Int, balance: Double, interestRace: Double)

   def getAccount()={
    Account(111,7000.0,1.2)
   }

  val withdrowal = 1500

  val acc = Try(getAccount())


  val withdrowalResult = acc map {
    (x: Account) => Account(x.acctNum, x.balance-withdrowal,x.interestRace)
    } filter{
      (x: Account) => x.balance>8000
    }recover{
    case nsee: NoSuchElementException => println("Something went wrong")
  }
  println(withdrowalResult)

私がwithdrawarResultを印刷すると、私は得るでしょう

Success(())

条件が満たされない場合に失敗を取得して例外を処理したい場合はどうすればよいですか?

4

1 に答える 1

2

回復を使用し、失敗から成功に回復しました。リカバリで印刷しただけで結果が得られない場合、結果として Success[Unit] が得られます (Unit は println の結果です)。

....filter(x => x.balance > 8000)
   .recover { case nsee: NoSuchElementException => "Not empty" } 
// res4: scala.util.Try[java.io.Serializable] = Success(Not empty)

失敗が必要な場合は、回復しないでください。

val withdrowalResult = acc map {
    (x: Account) => Account(x.acctNum, x.balance-withdrowal,x.interestRace)
    } filter {
      (x: Account) => x.balance>8000
    }
// Failure(java.util.NoSuchElementException: Predicate does not hold for Account(111,5500.0,1.2))
于 2013-09-26T16:30:12.763 に答える