模式匹配Scala中的案例类列表

spa*_*rkr 4 scala list pattern-matching scala-collections

假设我有一个我希望模式匹配的案例类列表,如果有类型,则返回true或false.例如.,

case class TypeA(one: String, two: Int, three: String)

val list = List(TypeA, TypeA, TypeA)
Run Code Online (Sandbox Code Playgroud)

我想现在匹配类型列表,看看TypeA是否包含其参数之一的某个值(比如第一个参数).我所拥有的是以下内容:

def isAvailableInTypeA(list: List[TypeA], checkStr: String) = {
  !(list.dropWhile(_.one != checkStr).isEmpty))
}
Run Code Online (Sandbox Code Playgroud)

对于我想要实现的目标,是否有更好的可读性建议?

Mar*_*rth 7

如果要检查谓词是否适用于列表的元素,请使用.exists.

scala> val l = List(TypeA("a",2,"b"), TypeA("b",2,"b"))
l: List[TypeA] = List(TypeA(a,2,b), TypeA(b,2,b))

scala> l.exists(_.one == "a")
res0: Boolean = true

scala> l.exists(_.one == "c")
res1: Boolean = false
Run Code Online (Sandbox Code Playgroud)