Scala中缀/后缀运算符

时间:2012-07-28 19:03:17

标签: scala postfix-operator

我想让下面的代码工作,但是我得到了一个编译错误:' 对象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!")
        }
    }
}

1 个答案:

答案 0 :(得分:4)

scala 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!")
   }
}