gpt4 book ai didi

kotlin - lambdas转换中的kotlin对象转换

转载 作者:行者123 更新时间:2023-12-02 13:22:36 24 4
gpt4 key购买 nike

我正在尝试进行以下编译:

val criteriaList = aList.stream().map { dateRange -> {
Criteria.where("KEY").`is`(dateRange) } }.toList().toTypedArray()

Criteria().orOperator(*criteriaList)

但:
Criteria().orOperator(*criteriaList)

当前无法编译:

Type mismatch.
Required:
Array<(out) Criteria!>!
Found:
Array<(() → Criteria!)!>


为什么?

最佳答案

您正在将dateRange映射到() -> Criteria
您不需要用大括号将->之后的内容包装起来。还要检查Kotlin reference regarding Lambda expression syntax:

val sum = { x: Int, y: Int -> x + y }

A lambda expression is always surrounded by curly braces [...], the body goes after an -> sign. If the inferred return type of the lambda is notUnit, the last (or possibly single) expression inside the lambda body is treated as the return value.


因此,您可以只编写以下内容:
.map { dateRange -> Criteria.where("KEY").`is`(dateRange) }
还要注意,您实际上并不需要调用 stream(),但是可以直接在其上调用 map(除非首先它不是真正的 List)。
因此,您的代码可能会简化为:
val criteriaList = aList.map { dateRange -> Criteria.where("KEY").`is`(dateRange) }
.toTypedArray()
要么
val criteriaList = aList.map { Criteria.where("KEY").`is`(it) }
.toTypedArray()

关于kotlin - lambdas转换中的kotlin对象转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51898390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com