我想让下面的代码工作,但是我得到了一个编译错误:' 对象A#c不接受参数'
“b”c d
如果我放弃'd',代码编译得很好。它必须与对我来说是新的中缀/后缀运算符有关。有人可以帮我上面的代码工作,并向我解释(或给我一些指示)为什么上面的代码语法不起作用?
我的班级定义:
object A {
implicit def stringToA(b: String) : A = new A(b)
}
class A(private val b: String) {
object c {
println("c")
def d: Unit = {
println("d!")
}
}
}
答案 0 :(得分:4)
a op b
中的为a.op(b)
,因此您的"b" c d
将为"b".c(d)
,但您想要的是"b".c.d
,因此您需要编写它充分。
如果你真的需要写"b" c d
,你可以尝试将d
作为方法c
的arg,例如
trait D {}
object d extends D
class A {
def c(ignored: D) = println("d!")
}
或可能
class A {
object c {
def apply(ignored: D) = println("d!")
}
}