Kotlin - 带有类型不匹配的 forEach 的嵌套列表

Kotlin - Nested lists with forEach with TypeMismatch

我正在编写一个将纯文本 CSV 文件转换为二维数组的函数,但我希望能够在分隔符后放置一个 space。我想要的 return 类型是 List>。我的逻辑是:

    val mapped = this.split(lineDelimiter).map { line -> line.split(delimiter).forEach { word -> word.dropWhile { char -> char == ' ' } } }

但是我得到了类型不匹配:

Error:(17, 16) Kotlin: Type mismatch: inferred type is List<Unit> but List<List<String>> was expected

我已经重写了它,使其在不使用 forEach 函数的情况下也能正常工作,但这非常难看。

下面表达式的结果是List<Unit>:

this.split(lineDelimiter).map { line -> line.split(delimiter).forEach { word -> word.dropWhile { char -> char == ' ' } } }

您似乎想将文本拆分为多行,然后将每行拆分为多个部分,然后更新每个单词。所以代码将是这样的:

this.split(lineDelimiter).map { line ->
    line.split(delimiter)
        .map { word ->
            word.dropWhile { char -> char == ' ' }
        }
}

主要变化:forEach 是类似语句的运算符,它是 returns 单元(并且应该进行变异)。 map 是类似表达式的运算符,它将 List<X> 转换为 List<Y>