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>
我正在编写一个将纯文本 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>