[英]Scala infix / postfix operators
我想使以下代码工作,但出现编译错误:'对象A#c不接受参数'
“ b” cd
如果我不使用'd',则代码可以正常编译。 它必须与对我来说是新的infix / postfix运算符有关。 有人可以帮我使上面的代码起作用,并向我解释(或给我一些指针)为什么上面的代码语法不起作用吗?
我的班级定义:
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!")
}
}
}
在scala中a op b
是a.op(b)
,因此您的"b" cd
将是"b".c(d)
,但是您想要的是"b".cd
,因此您需要完全编写它。
如果确实需要将其写为"b" cd
,则可以尝试使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!")
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.