有没有一种方法可以指定要应用 eta扩展的方法的签名? 例如:
<dependency>
<groupId>org.webjars</groupId>
<artifactId>font-awesome</artifactId>
<version>4.7.0</version>
</dependency>
引发编译错误:
val tupleNum = (1L,2L)
case class CaseClass(a:String, b:String)
object CaseClass {
def apply(a: Long, b: Long): CaseClass = new CaseClass(s"${a}", s"${b}")
}
println( (CaseClass.apply _).tupled(tupleNum) )
谢谢!
BTW: eta扩展是使用 _ 的正确术语吗?
答案 0 :(得分:3)
这里可以编译并运行正常(避免使用:paste
模式的怪异缩进):
case class C(a: String, b: String); object C {
def apply(a: Long, b: Long): C = C(s"$a", s"$b")
}
val t = (1L, 2L)
println((C.apply(_: Long, _: Long)).tupled(t))
或更确切地说
println((C(_: Long, _: Long)).tupled(t))