Scala 错误 - Unit 类型的表达式不符合预期的文件类型
Scala Error - Expression of type Unit doesn't conform to expected type File
我有以下代码:
var tempLastFileCreated: File = try {
files(0)
} catch {
case e: ArrayIndexOutOfBoundsException => ???
}
其中 files
是 val files: Array[File] = dir.listFiles()
现在无论我在 case e
中给出什么,我都会收到消息 Expression of type Unit doesn't conform to expected type File
我知道 =>
的右边部分必须是 File
.
类型的东西
谁能告诉我该放什么?
您承诺 tempLastFileCreated
是 File
,因此它不能同时是 Unit
或 String
,等等。您有几个选择。您可以改用 Option[File]
:
val tempLastFileCreated: Option[File] = try {
Some(files(0))
}
catch {
case e: ArrayIndexOutOfBoundsException => None
}
或者,如果您想存储错误消息,例如,另一种选择是使用 Either
:
val tempLastFileCreated: Either[String, File] = try {
Right(files(0))
}
catch {
case e: ArrayIndexOutOfBoundsException => Left("index out of bounds!")
}
只要最适合您的需求。你可能想看看 Scala 的 scala.util.Try
数据类型,它更安全。例如,
val tempLastFileCreated: Option[File] = Try(files(0)) match {
case Success(file) => Some(file)
case Failure(throwable) => None //or whatever
}
我有以下代码:
var tempLastFileCreated: File = try {
files(0)
} catch {
case e: ArrayIndexOutOfBoundsException => ???
}
其中 files
是 val files: Array[File] = dir.listFiles()
现在无论我在 case e
中给出什么,我都会收到消息 Expression of type Unit doesn't conform to expected type File
我知道 =>
的右边部分必须是 File
.
谁能告诉我该放什么?
您承诺 tempLastFileCreated
是 File
,因此它不能同时是 Unit
或 String
,等等。您有几个选择。您可以改用 Option[File]
:
val tempLastFileCreated: Option[File] = try {
Some(files(0))
}
catch {
case e: ArrayIndexOutOfBoundsException => None
}
或者,如果您想存储错误消息,例如,另一种选择是使用 Either
:
val tempLastFileCreated: Either[String, File] = try {
Right(files(0))
}
catch {
case e: ArrayIndexOutOfBoundsException => Left("index out of bounds!")
}
只要最适合您的需求。你可能想看看 Scala 的 scala.util.Try
数据类型,它更安全。例如,
val tempLastFileCreated: Option[File] = Try(files(0)) match {
case Success(file) => Some(file)
case Failure(throwable) => None //or whatever
}