gpt4 book ai didi

function - andThen用于Scala中两个参数的函数

转载 作者:行者123 更新时间:2023-12-04 13:19:09 25 4
gpt4 key购买 nike

假设我有两个函数fg:

val f: (Int, Int) => Int = _ + _
val g: Int => String = _ + ""

现在我想用 andThen组成它们以获得函数 h
val h: (Int, Int) => String = f andThen g

不幸的是它没有编译:(
scala> val h = (f andThen g)
<console> error: value andThen is not a member of (Int, Int) => Int
val h = (f andThen g)

为什么不编译?如何编写 fg以获得 (Int, Int) => String

最佳答案

它不会编译,因为andThenFunction1的一种方法(一个参数的功能:请参见scaladoc)。

您的函数f有两个参数,因此是Function2的实例(请参见scaladoc)。

要使其编译,您需要通过以下方式将f转换为一个参数的函数:

scala> val h = f.tupled andThen g
h: (Int, Int) => String = <function1>

测试:
scala> val t = (1,1)
scala> h(t)
res1: String = 2

您还可以通过 auto-tupling来更简单地将对 h的调用编写为,而无需显式创建一个元组(尽管由于其可能引起混淆和丢失类型安全性,所以自动组合可能会引起一些争议):
scala> h(1,1)
res1: String = 2

关于function - andThen用于Scala中两个参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28566214/

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