2010-09-30 41 views
4

用下面的定義,它是能夠確保具體類型參數相等:如何確保Scala中的類型參數不同?

trait WithEqual[T1 >: T2 <: T2, T2] 

所以行

type A = WithEqual[Int, Int] 

將是合法的。現在我的問題是:如何實現恰恰相反?因此,下面的行應編譯:

type B = WithUnequal[Int, Int] 

回答

10

這是Scala相當棘手,你不得不求助於有意的歧義。這是這種技術的example

Mark Harrah在他的操場上推廣了類型級hackery的技巧Up

這很可能適用於您的問題,但我現在沒有時間去嘗試。