任何人都可以解释一下如何在scala编译器中调用call-by-name?
该方法的语法快捷方式是这样的:arg:=>Int
将转换为arg: () => Int
并捕获传递给函数的参数,如何关闭?
即真实类型的call-by-name参数,例如:Function0[_]
?
感谢。
答案 0 :(得分:4)
按照您自己发现的名称调用参数,进行Function0[A]
。他们没有一流的支持,因此没有不同的类型。
您可以使用Scalaz中的Name
来实现这些方面的某些功能。为此,请参阅接受的答案here。
答案 1 :(得分:3)
如果我正确理解了这个问题,是的,语法=> Int
本质上是匿名无参数函数() => Int
的轻量级语法,在Scala中由类型Function0[Int]
表示。此外,在VM中按名称参数转换为内部类。
答案 2 :(得分:1)
没有“类型名称”这样的东西。按名称不是类型,它是参数传递模式。
您可以使用Function0
代替按名称传递但具有不同语义的参数。