繁体   English   中英

Scala中缀/后缀运算符

[英]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 ba.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM