두 조건에서 한 번에 데이터 세트를 필터링하고 싶습니다.두 조건의 스칼라 필터
가능합니까?
mystuff = mystuff.filter(_.isX && _.name == "xyz")
두 조건에서 한 번에 데이터 세트를 필터링하고 싶습니다.두 조건의 스칼라 필터
가능합니까?
mystuff = mystuff.filter(_.isX && _.name == "xyz")
것은 약간 덜 간결 람다 구문을 사용하여 :
mystuff = mystuff.filter(x => (x.isX && x.name == "xyz"))
당신은 스칼라 익명 함수 구문 here에 대한 자세한 내용을 찾을 수 있습니다
나는 이런 식으로 뭔가를 할 수 있습니다.
일부 성능에 미치는 영향은 "mystuff에"이 무엇인지에 따라이있을 수 있지만, 당신은 항상 당신이 자주 여러 조건으로 필터링해야하는 경우 두 번
mystuff = mystuff.filter(_.isX).filter(_.name == "xyz")
, 당신이 그들을 결합하는 방법을 정의 할 수 있습니다 필터링 할 수 있습니다 :
scala> (0 until 20) filter And(_ > 10, _ % 2 == 1)
res3: scala.collection.immutable.IndexedSeq[Int] = Vector(11, 13, 15, 17, 19)
: 여기
case class And[A](p1: A=>Boolean, p2: A=>Boolean) extends (A=>Boolean) {
def apply(a: A) = p1(a) && p2(a)
}
10보다 큰 경우에만 홀수 번호를 유지하기 위해 사용하는 방법입니다
동일한 방법으로 Or
및 Not
개의 연결자를 쉽게 쓸 수 있습니다.
이렇게하면 성능 오버 헤드가 제거됩니까? 최종 쿼리에서 이것이 올바르게 표현 된 것입니까? – zinking