在 Scala 中为过滤器链接多个谓词
Chaining multiple predicates for filter in scala
我是函数式编程的新手。我想为过滤器链接多个谓词。
假设我有要过滤的姓名列表...
val names = List("cat","dog","elephant")
//Currently I am doing like this, this is not dynamic,The list of name will come dynamically
objects.filterSubjects(string => {
string.endsWith("cat") || string.endsWith("dog") || string.endsWith("elephant")
})
如何使上面的行动态化,这样我就不用写了。我想根据用户提供的名称列表创建它。
您可以使用 exists
来检查您的动态列表 names
是否有这样的值。
val names = List("cat","dog","elephant")
val objects = List("stringcat", "dog", "dognot")
objects.filter(string => {
names.exists(n => string.endsWith(n))
})
// List(stringcat, dog)
您可以使用 exists
检查某个谓词是否满足集合中的任何值(或在每个元素的谓词上)或 forall
检查谓词 ID 是否满足所有值( AND 在每个元素的谓词上)。
您可以像这样使用它:
val names = List("cat", "dog", "elephant")
val predicate = (s: String) => names.exists(s.endsWith _)
objects.filter(predicate)
我是函数式编程的新手。我想为过滤器链接多个谓词。
假设我有要过滤的姓名列表...
val names = List("cat","dog","elephant")
//Currently I am doing like this, this is not dynamic,The list of name will come dynamically
objects.filterSubjects(string => {
string.endsWith("cat") || string.endsWith("dog") || string.endsWith("elephant")
})
如何使上面的行动态化,这样我就不用写了。我想根据用户提供的名称列表创建它。
您可以使用 exists
来检查您的动态列表 names
是否有这样的值。
val names = List("cat","dog","elephant")
val objects = List("stringcat", "dog", "dognot")
objects.filter(string => {
names.exists(n => string.endsWith(n))
})
// List(stringcat, dog)
您可以使用 exists
检查某个谓词是否满足集合中的任何值(或在每个元素的谓词上)或 forall
检查谓词 ID 是否满足所有值( AND 在每个元素的谓词上)。
您可以像这样使用它:
val names = List("cat", "dog", "elephant")
val predicate = (s: String) => names.exists(s.endsWith _)
objects.filter(predicate)