型制約を使用して、型と型A
がB
同じでなければならないことを示しています。以下では、 from から へ暗黙的にキャストすることが許可されていますが、 from からへA
のB
明示的なキャストが必要です。これを行う正しい方法は何ですか?B
A
class Pair[A, B](var first: A, var second: B) {
def swap()(implicit ev: A =:= B) {
val tmp = second
second = first
first = tmp //won't compile without appending .asInstanceOf[A]
}
/*
...other methods like replaceFirst, replaceSecond that
don't require types A, B to be the same
*/
}