【发布时间】:2021-04-18 08:38:35
【问题描述】:
我正在使用 kotlin 中的 map,目前我想看看是否可以将整数列表映射到函数列表 (Int) -> Int,同时在内部执行一堆操作需要我将值保存到 vals 的 lambda
所以我有这个简单的代码:
val num = arrayOf(1, 2, 3, 4)
val funcs = num.map <Int, (Int) -> Int > { x -> {
y -> y + x
}}
这是一个精简的例子,我真正想做的事情有点复杂。但是我需要在“内部”lambda 内部进行相当多的操作,所以我需要编写可以使用 val 的代码块。像这样:
val fs = num.map <Int, (Int) -> Int > { x -> {
y -> {
val tmp = y *2
val tmp1 = x / 2
tmp + tmp1
}
}}
但这部分不起作用,编译器被返回类型弄糊涂了 我该怎么做?
【问题讨论】:
-
哪部分不起作用?
-
为什么还需要中间变量?
y -> y * 2 + x / 2怎么了? -
确切的例子是一个玩具例子。但实际上我只需要编写一些我们无法在单个 oneliner 中编写的代码
-
您是否尝试过为 lambda 参数指定显式类型?
-
另外,底部不工作
标签: kotlin functional-programming