按名称调用参数

时间:2012-02-07 17:20:14

标签: scala types

任何人都可以解释一下如何在scala编译器中调用call-by-name? 该方法的语法快捷方式是这样的:arg:=>Int将转换为arg: () => Int并捕获传递给函数的参数,如何关闭? 即真实类型的call-by-name参数,例如:Function0[_]

感谢。

3 个答案:

答案 0 :(得分:4)

按照您自己发现的名称调用参数,进行Function0[A]。他们没有一流的支持,因此没有不同的类型。

您可以使用Scalaz中的Name来实现这些方面的某些功能。为此,请参阅接受的答案here

答案 1 :(得分:3)

如果我正确理解了这个问题,是的,语法=> Int本质上是匿名无参数函数() => Int的轻量级语法,在Scala中由类型Function0[Int]表示。此外,在VM中按名称参数转换为内部类。

答案 2 :(得分:1)

没有“类型名称”这样的东西。按名称不是类型,它是参数传递模式。

您可以使用Function0代替按名称传递但具有不同语义的参数。