0
タイプの制約は、次のタイプとして実装されています:スカラーコンパイラが証拠パラメータ型を推論しないのはなぜですか?
abstract class <:<[-From, +To] extends Function1[From, To]
object <:< {
implicit def conforms[A] = new (A <:< A) { def apply(x: A) = x }
}
私たちは、このように我々のコードで証拠を使用します。
def firstLast[A, C](it: C)(implicit ev: C <:< Iterable[A]) =
(it.head, it.last)
私はapply
方法コンパイラはit
はhead
とが含まれていないことを言ってクリアしたときにlast
ですが、暗黙の型解決はすでに成功していました。これは、CがIterable [A]のサブタイプであることを意味します。しかし、コンパイラはそれを推論することはできません。 Scalaの型推論は十分強力ではありませんか?
あなたが記述しているエラーを引き起こすのはどのようなコードですか?最初の赤面では、これは意図したとおりに動作するように見えます。 –
'<:<'はスカラで使用できるデフォルトの演算子ですが、なぜあなたはカスタムbtwに行くのですか? – flavian
eclipseやintellijのようなIDEによって与えられたエラーについては言及していません。 –