gpt4 book ai didi

scala - 语法function[T]在scala中是什么意思

转载 作者:行者123 更新时间:2023-12-02 08:21:11 25 4
gpt4 key购买 nike

我是 Scala 的新手,想知道下面的语法是什么意思?

def exec[T](f: () => T): T = {
f()
}

据我所知,函数“exec”期望函数作为参数并返回“T”类型的值,但是 执行[T] 表示?

最佳答案

exec是方法名,其中 T是方法的泛型类型参数。

方法签名需要指定类型 T为了让我们能够指定 T作为方法的参数。

使用泛型类型参数时,您可以传递不同的类型并在它们之间重用相同的代码,例如:

scala> exec[Int](() => 1)
res29: Int = 1

scala> exec[Double](() => 1.0)
res30: Double = 1.0

scala> exec[String](() => "hello, world")
res31: String = hello, world

当我声明 exec[Int] ,参数 f现在是 Function0[Int]] (或 () => Int 如果我们使用语法糖)

正如@TzachZohar 所指出的,Scala 编译器足够聪明,有时能够为我们推断类型参数,这意味着我们可以在使用该方法时省略方括号。例如:
scala> exec(() => 1)
res32: Int = 1

scala> exec(() => 1.0)
res33: Double = 1.0

scala> exec(() => "hello, world")
res34: String = hello, world

这是因为编译器能够推断 T 的类型通过方法返回类型。

您可以阅读有关这些主题的更多信息: Type & polymorphism basics , Generic Classes , Local Type InferenceScala Specification for Local Type Inference

关于scala - 语法function[T]在scala中是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36977738/

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