如何在 Scala 中正确处理 returns
How to handle returns correctly in Scala
我是 Scala 的新手,我正在尝试执行以下操作:
我有这样的功能:
def terrainFunction(levelVector: Vector[Vector[Char]]): Pos => Boolean = {
(pos: Pos) => if (levelVector(pos.row)(pos.col) == '-') false else true
}
但我想捕获 returned 函数中的所有错误和 return 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
为什么编译器认为我是 returning 布尔值,而不是整个函数:
(pos: Pos) =>
try {
return terrFunc(pos)
} catch {
return false
}
如何解决?
不要使用 try
或 return
,而是使用适当的数据类型,例如 Try
。
import scala.util.Try
def terrainFunction(levelVector: Vector[Vector[Char]]): Pos => Boolean =
(pos: Pos) =>
Try(levelVector(pos.row)(pos.col) != '-').getOrElse(false)
我是 Scala 的新手,我正在尝试执行以下操作:
我有这样的功能:
def terrainFunction(levelVector: Vector[Vector[Char]]): Pos => Boolean = {
(pos: Pos) => if (levelVector(pos.row)(pos.col) == '-') false else true
}
但我想捕获 returned 函数中的所有错误和 return 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
为什么编译器认为我是 returning 布尔值,而不是整个函数:
(pos: Pos) =>
try {
return terrFunc(pos)
} catch {
return false
}
如何解决?
不要使用 try
或 return
,而是使用适当的数据类型,例如 Try
。
import scala.util.Try
def terrainFunction(levelVector: Vector[Vector[Char]]): Pos => Boolean =
(pos: Pos) =>
Try(levelVector(pos.row)(pos.col) != '-').getOrElse(false)