1

鉴于以下示例,我可以看到,如果我尝试用多个参数列表或仅多个参数组合一个函数,它会有所不同。我不明白为什么它不一致。

val foo: Int => Int => Int = ???
foo.curried.andThen(???) // KO
foo.tupled.andThen(???) // KO
foo.andThen(???) // OK
val bar: (Int, Int) => Int = ???
bar.curried.andThen(???) // OK
bar.tupled.andThen(???) // OK
bar.andThen(???) // KO

为什么 Scala 编译器不能bar作为我可以compose/调用的函数处理andThen

4

2 回答 2

3

这是不可能实现Function2.compose的,因为参数必须是一个返回两个值的函数(传递给Function2.apply)。Scala 语言不支持多个返回值,因此编译器对此无能为力。

实现Function2.andThen是可能的,但范式是通过多个函数链接一个值,这是不可能的,Function2因为返回值存在相同的问题。

于 2020-01-16T12:56:33.003 回答
0

好的,我找到了-scala.Function2andThenFunction1

于 2020-01-16T12:55:17.627 回答