gpt4 book ai didi

scala - 有没有办法在 Scala 中编写这个 Haskell 代码?

转载 作者:行者123 更新时间:2023-12-04 23:03:48 24 4
gpt4 key购买 nike

我正在学习一些函数式编程语言,学习感兴趣的东西,我现在正在研究 Scala。我想要做的是找出编写名为 double 的函数的最简单方法。这需要一个参数并将其加倍。到目前为止我想出的是:

def double = (x:Int) => x*2

或者
def double(x:Int) = x*2

这有效,但我正在寻找最简单的方法。在 Haskell 中,我可以简单地这样做:
double = (*2)

因为它是一个部分应用的函数,所以不需要命名变量或指定任何类型(我确定 * 函数会处理这些)。有没有类似的方法可以使用 Scala 做到这一点?我尝试了一些,尤其是使用 _而不是 x ,但似乎都不起作用。

最佳答案

这个怎么样:

val double = (_: Int) * 2

备注 这里 doubleFunction而不是 method .在你的第一个例子中,你定义了一个 method命名 double返回类型为 Function .在你的第二个例子中,你刚刚定义了一个 method . Function不同于 method在斯卡拉。

如果编译器可以得到类型信息,我们可以写 Function甚至简单:
scala> def apply(n: Int, f: Int => Int) = f(n)
apply: (n: Int, f: Int => Int)Int

scala> apply(10, 2*)
res1: Int = 20

scala> apply(10, 100+)
res2: Int = 110

关于scala - 有没有办法在 Scala 中编写这个 Haskell 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16995576/

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