Skip to content

Commit 1a148e7

Browse files
committed
SeqLike containsTyped
1 parent 8d9cf0b commit 1a148e7

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

src/main/scala/collection.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ import scala.collection.mutable.Builder
66

77

88
object `package`{
9+
implicit class SeqLikeExtensions[A, Repr](val coll: SeqLike[A, Repr]) extends AnyVal{
10+
/** type-safe contains check */
11+
def containsTyped(t: A) = coll.contains(t)
12+
}
913
implicit class TraversableLikeExtensions[A, Repr](val coll: TraversableLike[A, Repr]) extends AnyVal{
1014
/** Eliminates duplicates based on the given key function.
1115
There is no guarantee which elements stay in case element two elements result in the same key.

src/test/scala/collection.scala

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@ case class Person(name: String, age: Int)
99
object chris extends Person("Chris",99)
1010
object marcos extends Person("Marcos",99)
1111
class CollectionTest extends FunSuite{
12+
test("SeqLike containsTyped"){
13+
val s = Seq(1)
14+
assert( s contains 1 )
15+
assert( s containsTyped 1 )
16+
assert( !(s contains 2) )
17+
assert( !(s containsTyped 2) )
18+
assert( !(s contains "asdf") )
19+
assertTypeError( """ !(s containsTyped "asdf") """ )
20+
}
1221
test("distinctBy"){
1322
val ps = List(
1423
chris,

0 commit comments

Comments
 (0)