Scala 递归函数 else 如果返回 Unit

Scala recursive function else if returning Unit

Noob Scala 问题:

我有以下代码摘录:

@tailrec
def buildObjectFromFile(dataList: List[String], fileObject: IncomingFile): IncomingFile = {
  dataList match {
    case Nil => fileObject

    case data :: list =>
      val recordIdentifier = data.substring(0, 2)

      if (recordIdentifier.equals("00")) {
        val fileHeader = new fFileHeader(
            ...
        )

        buildObjectFromFile(list, new IncomingFile(fileHeader, fileObject.accountsList, fileObject.fileTrailer))
      } else if (recordIdentifier.equals("01")) {
        val accountHeader = new AccountHeader(
          ...
        )

        fileObject.accountsList += new Account(data.substring(12, 22), accountHeader, null, null, null)

        buildObjectFromFile(list, new IncomingFile(fileObject.fileHeader, fileObject.accountsList, fileObject.fileTrailer))
      } else if (recordIdentifier.equals("99")) {  // <--- Problematic
        val fileTrailer = new FileTrailer(
          ...
        )

        buildObjectFromFile(list, new IncomingFile(fileObject.fileHeader, fileObject.accountsList, fileTrailer))
      }
  }
}

此代码无法编译,因为编译器抱怨最后一个 else if 块 return 是 Unit,而它需要 return 和 IncomingFile 类型。我不明白为什么只有最后一个 if 语句有问题。

您可以通过对整个 if-else-if 表达式执行 else 来修复。现在你没有它所以整个块都有单元类型