gpt4 book ai didi

scala - 两种方式声明函数。区别是什么?

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

这两个函数声明实际上不同吗?

如果不是,为什么它们有不同的 toString 值?

scala> def f: (Int) => Int = x=> x*x
f: (Int) => Int

scala> def f(x: Int) = x*x
f: (Int)Int

最佳答案

第一个是无参数方法 f1返回 Function1[Int, Int] .

scala> def f1: (Int => Int) = (x: Int) => x * x
f1: (Int) => Int

第二个是单参数方法 f2这需要一个 Int并返回 Int .
scala> def f2(x: Int): Int = x * x
f2: (x: Int)Int

您可以使用相同的语法调用 f1 和 f2,尽管当您调用 f1(2) 时扩展为 f1.apply(2) .
scala> f1
res0: (Int) => Int = <function1>

scala> f1(2)
res1: Int = 4

scala> f1.apply(2)
res2: Int = 2

scala> f2(2)
res3: Int = 4

最后,您可以“提升”方法 f2到一个函数如下。
scala> f2
<console>:6: error: missing arguments for method f2 in object $iw;
follow this method with `_' if you want to treat it as a partially applied funct
ion
f2
^

scala> f2 _
res7: (Int) => Int = <function1>

scala> (f2 _).apply(2)
res8: Int = 4

练习 : f1 _的类型是什么?

关于scala - 两种方式声明函数。区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2720486/

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