我是 Scala 的新手,我正在嘗試執行以下操作:
我有這樣的功能:
def terrainFunction(levelVector: Vector[Vector[Char]]): Pos => Boolean = {
(pos: Pos) => if (levelVector(pos.row)(pos.col) == '-') false else true
}
但是我想捕獲回傳函式中的所有錯誤并從中回傳 false 而不是拋出例外。
所以我嘗試這樣做:
def terrainFunction(levelVector: Vector[Vector[Char]]): Pos => Boolean = {
val terrFunc = (pos: Pos) => if (levelVector(pos.row)(pos.col) == '-') false else true
(pos: Pos) =>
try {
return terrFunc(pos)
} catch {
return false
}
}
問題是我收到編譯器錯誤:
Type mismatch.
Required: Pos => Boolean
Found: Boolean
為什么編譯器認為我回傳的是布林值,而不是整個函式:
(pos: Pos) =>
try {
return terrFunc(pos)
} catch {
return false
}
以及如何解決這個問題?
uj5u.com熱心網友回復:
不要使用trynor return,而是使用適當的資料型別,如Try.
import scala.util.Try
def terrainFunction(levelVector: Vector[Vector[Char]]): Pos => Boolean =
(pos: Pos) =>
Try(levelVector(pos.row)(pos.col) != '-').getOrElse(false)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/369097.html
標籤:斯卡拉
