有两个简单的类,以 Int
作为参数:
case class Foo(i: Int)
class Bar(j: Int)
我可以说:
List(1,2,3) map Foo
这段代码可行并且等效于更冗长的代码:
List(1,2,3) map {Foo(_)}
然而,Bar
(因为它不是一个case类?)不能在相同的结构中使用:
List(1,2,3) map Bar
error: not found: value Bar
List(1,2,3) map Bar
^
是否有一些特殊的语法可以引用任何构造函数并利用 eta 扩展?
List(1,2,3) map {new Bar(_)}
看起来比 Foo
更加冗长。
new String _
。在字节码级别上也有所不同,并且在方法和构造函数之间的JVM期望中存在各种差异。 - Daniel C. Sobral