我是 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 Inference和 Scala Specification for Local Type Inference
关于scala - 语法function[T]在scala中是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36977738/