나는필터
case class User(var firstName: String, var lastName: String, var city: String)
무언가 목록
val users = List(
new User("Peter", "Fox", "Berlin"),
new User("Otto", "Schmidt", "Berlin"),
new User("Carl", "Schmidt", "Berlin"),
new User("Hans", "Schmidt", "Berlin"),
new User("Hugo", "Schmidt", "Berlin"))
정의가 있다면
val test1 = (user:User,key:String) => user.lastName.equals(key)
val test2 = (user:User,key:String) => user.firstName.startsWith(key)
및 필터링
val test = users.filter(u => {
test1(u,"Schmidt") && test2(u,"H")
})
이 작동합니다. 하지만 어떻게 test1, test2 ... 필터 동적으로 아마 목록을 형성 뭔가를 생성 할 수 있습니까? 미리 정의 된 많은 필터 조건을 갖고 싶습니다. 내 목록을 필터링하고 필터링 순서를 결합하려면 test1 (u, "Schmidt") & & test2 (u, "H")와 같은 조건을 조합하십시오.
을 'Seq'를 여기에서 제거하십시오 :'and (condition1, condition2)' –
알아요. 또한 predicates.exists (predicate => predicate (user)) 대신 predicates.exists (_ (user))를 사용하여 결합 술어를 단순화 할 수 있습니다. 그러나 좀 더 장황한 것이 더 좋을 것이라고 생각했습니다. 그렇지 않으면 초보자에게 혼란을 일으킬 수 있습니다. –
'UserPredicates'를 만들지 않고'User' methods'와 (_. firstName.firstNameStartsWith ("H"), ...)'를 사용하지 않는 것이 궁금합니다. –