【发布时间】:2011-05-20 16:33:26
【问题描述】:
我有这样的课:
class A(arg: Int)(implicit i: Boolean) {
def apply(v: Double): this.type = {
// do stuff
this
}
}
我想通过在同一行初始化和调用 apply 来创建它的实例:
implicit val i = false
val a = A(arg=1)(v=2.0) // doesn't work
val a2 = (A(arg=1))(v=2.0) // doesn't work
不幸的是,编译器假定 v=2.0 用于隐式参数,而不是用于 apply()。我尝试了多种插入 {} 和 () 的不同语法,但都没有奏效。我意识到 v 可以移动到构造函数中,但在我的情况下,这不是一个选项,因为 A 是子类,我不想将 v 添加到每个子类构造函数中。有没有办法做到这一点?谢谢。
【问题讨论】:
-
@pst 试过了,由于某种原因不起作用
-
A(1)|>(_(2.0))...好吧,可能不会更好。
标签: scala