Scala,这个函数定义意味着什么?

时间:2014-05-21 06:25:36

标签: scala

在以下代码段中,(F:=> T)是什么意思?

def func1[T](arg1: Int, arg2: String)(F: => T): func2[T]

由于

1 个答案:

答案 0 :(得分:2)

F是参数名称; => T表示它是按名称参数。它基本上等同于() => T带有一些语法糖:

  1. 调用此方法时,参数的类型为T,并会自动转换为() => T

    func1[String](0, x)(x + x) ===> func1[String](0, x)(() => x + x)
    
  2. 实施此方法时,F的每次使用都会变为F()。因此,每次都会重新计算T类型的值。

  3. 显然,这在以下两种情况之一中很有用:

    1. 如果可能不需要F;

    2. 如果F返回的值可能会在不同的调用之间发生变化。