Вы можете использовать ограничения обобщенного типа оператор =:=
.
Например:
def contains[A,B](a: Seq[A], b: B)(implicit evidence: A =:= B): Boolean = a.contains(b)
и затем:
println(contains1(Seq(1,2,3), "four")) //fails with Cannot prove that Int =:= String.
println(contains1(Seq("one"), "four")) //returns false
println(contains1(Seq("one", "four"), "four")) //true
Подробнее об ограничениях обобщенного типа здесь и здесь .
Как заметил LuisMiguelMejíaSuárez, вы также можете рассмотреть возможность использования B <:< A
вместо A =:= B
. Я не буду подробно останавливаться на различиях между этими двумя, потому что это описано в связанном ответе и статье, но вкратце, <:<
также позволит всем B
, которые являются подтипом A
, в то время как =:=
нужны типы для соответствия точно.