语法功能[T]在scala中是什么意思

用户名

我是scala的新手,想知道以下语法的含义是什么?

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

据我了解,函数“ exec”期望函数作为参数并返回类型“ T”的值,但是exec [T]表示什么呢?

尤瓦尔·伊茨恰科夫(Yuval Itzchakov)

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通过方法的返回类型来推断类型,因此可以使用此方法。

您可以阅读以下主题的更多信息:类型和多态性基础知识泛型类局部类型推断局部类型推断Scala规范

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

语法糖<< =在Scala中是什么意思?

来自分类Dev

这个scala语法是什么意思?

来自分类Dev

JL在at&t语法中是什么意思?

来自分类Dev

JL在at&t语法中是什么意思?

来自分类Dev

::在Ruby语法中是什么意思?

来自分类Dev

if语法中的','是什么意思?

来自分类Dev

Lombok中的语法@@()是什么意思?

来自分类Dev

if语法中的','是什么意思?

来自分类Dev

“类型T = ..”在Scala中是什么意思?

来自分类Dev

“ SomeType [_]”在scala中是什么意思?

来自分类Dev

Scala中的#::是什么意思?

来自分类Dev

在Scala中“:+”是什么意思

来自分类Dev

“ ::”在Scala中是什么意思?

来自分类Dev

符号=?=在Scala中是什么意思?

来自分类Dev

在Scala中“:+”是什么意思

来自分类Dev

-> 在 Scala 中是什么意思

来自分类Dev

*[ ... ] 语法是什么意思?

来自分类Dev

Scala val语法:val myVal:{def ...}是什么意思?

来自分类Dev

<...功能>是什么意思

来自分类Dev

@(t)在Matlab中是什么意思?

来自分类Dev

@(t)在Matlab中是什么意思?

来自分类Dev

此模板语法“ typename = T”是什么意思?

来自分类Dev

T-SQL中的老式JOIN语法是什么意思?

来自分类常见问题

Perl中的<<'m'=〜m >>语法是什么意思?

来自分类常见问题

模板中的#foo =“ myFoo”语法是什么意思?

来自分类Dev

在语法内(在Perl 6中)是什么意思?

来自分类Dev

Todomvc中的“![]” Elm代码语法是什么意思

来自分类Dev

在Swift中,这种特定的语法是什么意思?

来自分类Dev

http请求中的这种语法是什么意思?