2

私は次のIntようなタイプを使用しようとしています: 10 twotimes.

これは、Akka の duration パッケージに似ており、たとえば10 minutesとを記述できます5 seconds

私は次のことをしました:

object ImplicitConversion2 {
  class Test(val a:Int) {
    def threetimes = a * 3
  }

  implicit def IntToTest(e:Int) = new Test(e)

  5.threetimes                 //> res0: Int = 15
  10.threetimes                //> res1: Int = 30
  11.threetimes                //> res2: Int = 33
}

この場合、threetimeslikeを使用できます10.threetimes。つまり、 と の間にドットが10ありthreetimesます。Intとの間のドットを削除したいthreetimes

と書く5 threetimesとエラーになります。どうやってやるの?

4

2 に答える 2

3

Luigi Plinge がコメントで正しく述べているように、コンパイラは後置演算子の呼び出しの後にその行を引数として使用しようとします。エラー メッセージを見ると、次のことが明確になります。

<console>:10: error: Int does not take parameters
          3 threetimes

このエラーは、それが属していない引数として何かを使用しようとしていることを意味します。ドット表記を使用するとこのエラーが修正されるという事実は、何が問題なのかを明らかにするはずです。後置演算子を安全に使用する唯一の方法は、それらを引数として渡すことです。ここで、)または が,式を終了します。

def foo(x: Int, y: Int) = x + y

foo(4 threetimes, 8 threetimes)
于 2013-05-15T06:54:48.870 に答える