鉴于以下返回Try [Int]的递归函数,我得到一个编译错误,提示
type mismatch; found : scala.util.Try[Int] required: Int
但是该函数返回Try[Int]
,这是什么问题?如果Try导致失败,我需要函数引发错误。
def getInt(i: Int): Try[Int] = Try {
if (i == 0)
i
else {
val j = i - 1
getInt(j) // <-- error is thrown in this line
}
}
答案 0 :(得分:3)
您可以在“立即尝试”中进行尝试。
尝试(哈哈!):
def getInt(i: Int): Try[Int] =
if (i == 0)
Success(0)
else
getInt(i-1)
答案 1 :(得分:1)
方法getInt
返回Try[Int]
,因此您是这样编写的:
Try { if (i == 0) return integer else return Try[Int] }
要解决此问题,您必须这样做:
def getInt(i: Int): Try[Int] =
if (i == 0)
Success(i)
else {
val j = i - 1
getInt(j) // <-- error is thrown in this line
}
随着Success
扩展Try
,这将起作用