【发布时间】:2021-07-12 23:25:25
【问题描述】:
我正在使用 kotlin 中的高阶函数。
我想要一个函数列表,然后通过调用列表中的所有函数并对它们求和,将列表简化为一个结果。 像这样的:
val num = arrayOf(1, 2, 3, 4)
val funcs = num.map <Int, (Int) -> Int > { x -> {
y -> y + x
}}
val res = funcs.reduce{acc, elem -> elem(1) + acc}
但是这里的底线没有编译,并声称我在归约中的 lambda 返回 Unit,这对我来说没有意义。 我也试过这样调用reduce,同样的问题仍然存在:
val res = funcs.reduce{acc, elem -> elem.invoke(1) + acc}
为什么调用 Int -> Int lambda 会返回 Unit?以及如何完成这项工作
编辑:
奇怪的是,这行得通:
val res = funcs.fold(0){acc, func -> func(0) + acc}
【问题讨论】:
标签: kotlin functional-programming