gpt4 book ai didi

kotlin - Kotlin 是否支持部分应用程序?

转载 作者:IT老高 更新时间:2023-10-28 13:44:26 26 4
gpt4 key购买 nike

由于 Kotlin 支持函数式编程中的许多概念,我想知道是否有办法在 Kotlin 中也对函数进行部分应用?

部分应用可能有用的一个例子是:

// In one class
fun doSomething(cb: (a, b) -> Unit) {
<some logic here to compute someField>
doSomethingElse(cb.applyPartially(someField))
}

// In another class
fun doSomethingElse(cb: (b) -> Unit) {
<some logic here to compute someOtherField>
cb(someOtherField)
}

最佳答案

开箱即用,不。但是使用辅助函数并不难:

    fun add(a: Int, b:Int): Int {
return a + b
}

fun <A, B, C> partial2(f: (A, B) -> C, a: A): (B) -> C {
return { b: B -> f(a, b)}
}

val add1 = partial2(::add, 1)

val result = add1(2) //3

所以 partial2 接受一个有 2 个参数的函数和第一个参数,并将它应用到一个有 1 个参数的函数。你必须为你需要的所有 arities 编写这样的助手。

或者,您可以使用扩展方法来做到这一点:

fun <A,B,C> Function2<A,B,C>.partial(a: A): (B) -> C {
return {b -> invoke(a, b)}
}

val abc: (Int) -> Int = (::add).partial(1)

关于kotlin - Kotlin 是否支持部分应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52711621/

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