1

Scala (疑似コード) で次の制約をどのようにエンコードしますか?

def foo(x: T forSome { type T has a Numeric[T] instance in scope }) = {
  val n= implicitly[...] // obtain the Numeric instance for x
  n.negate(x) // and use it with x
}

つまり、入力引数には型クラスのインスタンスが必要ですが、引数の型は気にしません。インスタンスを取得して引数で使用する必要があるだけです。

存在型である必要はありませんが、defの署名で型パラメーターを避ける必要があります。

編集:明確にするために、これらの場合の標準的なアプローチ、つまり:

def foo[T: Numeric](x: T) = ...

メソッドに型パラメーターを追加する必要があるため、私には機能しません。

ありがとう。

4

2 に答える 2

0

を呼び出すとタイプが必要になるように見えるため、何をしようとしているのかよくわかりませんimplicitly。以下はあなたのために働くでしょうか?

def foo(implicit x: Numeric[_]) {
   //code goes here.
}
于 2013-06-30T06:38:21.790 に答える