Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 在arrow kt中是否有类似ap2、ap3的功能?_Kotlin_Arrow Kt - Fatal编程技术网

Kotlin 在arrow kt中是否有类似ap2、ap3的功能?

Kotlin 在arrow kt中是否有类似ap2、ap3的功能?,kotlin,arrow-kt,Kotlin,Arrow Kt,我看到scala代码在这里使用 vala=Some(7) val b=一些(9) 应用程序[选项].ap2(部分(添加))(a、b) 我尝试将此代码迁移到kotlin和arrow,如下所示 Option.applicative() .tupled(Some(7), Some(9)) .ap(Some(::add)) // works but dirty fun add(tuple: Tuple2<Int, Int>): Int = tuple.a

我看到scala代码在这里使用

vala=Some(7)
val b=一些(9)
应用程序[选项].ap2(部分(添加))(a、b)
我尝试将此代码迁移到kotlin和arrow,如下所示

Option.applicative()
        .tupled(Some(7), Some(9))
        .ap(Some(::add))

// works but dirty
fun add(tuple: Tuple2<Int, Int>): Int = tuple.a + tuple.b

// not work, compilation error
// fun add(a: Int, b: Int): Int = a + b
Option.applicative()
.tuple(一些(7),一些(9))
.ap(部分(::添加))
//工作但肮脏
趣味添加(tuple:Tuple2):Int=tuple.a+tuple.b
//不工作,编译错误
//趣味加法(a:Int,b:Int):Int=a+b
正如您所注意到的,
Tuple2
必须在
add
函数签名中指定。 我搜索了arrow的官方文档,但是没有像ap2、ap3、ap4这样的
apN
功能


是否有任何方法可以使用第二个未包含
Tuple2
类型的函数?

一旦版本0.10可用,Arrow将在处理此问题的函数类型上有一个
.tupled()
方法,因此您可以编写:

Option.applicative()
      .tupled(Some(7), Some(9))
      .ap(::add.tupled())

fun add(a: Int, b: Int) = a + b
用于最多22个参数的函数