2

次のコードを機能させたいのですが、コンパイル エラーが発生します: ' object A#c does not take parameters'

「b」CD

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

1 に答える 1

4

in scalaa op ba.op(b)であるため、 は になります"b" c dが、必要なの"b".c(d)"b".c.dであるため、完全に記述する必要があります。

本当にそれを書く必要がある場合は、メソッドの arg"b" c dを作成してみることができます。dc

trait D {}

object d extends D

class A {

   def c(ignored: D) = println("d!")

}

またはおそらく

class A {

   object c {
      def apply(ignored: D) = println("d!")
   }
}
于 2012-07-28T19:37:55.970 に答える