Selectively disable subsumption in Scala? (correctly type List.contains)

前端 未结 6 1811
北荒
北荒 2020-12-16 11:04
List(\"a\").contains(5)

Because an Int can never be contained in a list of String

6条回答
  •  不思量自难忘°
    2020-12-16 12:07

    In my library extension I use:

    class TypesafeEquals[A](val a: A) {
      def =*=(x: A): Boolean = a == x
      def =!=(x: A): Boolean = a != x
    }
    implicit def any2TypesafeEquals[A](a: A) = new TypesafeEquals(a)
    
    
    class RichSeq[A](val seq: Seq[A]) { 
      ...
      def containsSafely(a: A): Boolean = seq exists (a =*=)
      ...
    }
    implicit def seq2RichSeq[A](s: Seq[A]) = new RichSeq(s)
    

    So I avoid calling contains.

提交回复
热议问题