任何人都可以给我解释如何在scala编译器内部调用名称? 该方法的句法快捷方式将如此:arg:=>Int
将转换为arg:() => Int
并捕获传递给函数的参数,闭包如何? 即即时类型的名称参数如:Function0[_]
?call-by-name参数
谢谢。
任何人都可以给我解释如何在scala编译器内部调用名称? 该方法的句法快捷方式将如此:arg:=>Int
将转换为arg:() => Int
并捕获传递给函数的参数,闭包如何? 即即时类型的名称参数如:Function0[_]
?call-by-name参数
谢谢。
如果我正确地理解了这个问题,是的,语法=> Int
本质上是一个匿名无参数函数() => Int
的轻量级语法,在Scala中由类型Function0[Int]
表示。而且,在VM by-name参数内部转换为内部类。
按照您自己的发现,名称参数参数可以解析为Function0[A]
。他们没有一流的支持,因此没有其他类型的支持。
您可以使用Scalaz的Name
来实现这些行。为此,请参阅接受的答案here。
有没有这样的事情,“类型的名称”。 By-name不是一个类型,它是一个参数传递模式。
您可以使用Function0
来代替正在通过名称传递但具有不同语义的参数。
你想做什么?问题不明确。 – 2012-02-07 17:59:58
@ DanielC.Sobral嗨。让我们假设我想要类似这样的:'def foo(i:=> Int):[Int,Function1 [这里需要'call-by-name'参数的类型,或者[_,_]]]''。 **我怎么写它?**纯粹假设的问题...... – dvigal 2012-02-07 18:38:50