kotlin - Lambda 表达式 "Not"谓词

标签 kotlin lambda predicate

我目前正在学习 Kotlin,并希望成为一名开发人员,但我遇到了一个问题,无法找出答案(即使经过广泛的 google 研究)。

如果有人可以帮助我并解释他们的解决方案,我将不胜感激。 :)

提前谢谢您!

问题:

“编写一个谓词,采用原始谓词:(Char) -> bool 变量并返回否定结果。您的谓词是过滤字符串。”

实现: val notPredicate: (Char) -> Boolean = TODO("提供实现")

最佳答案

所以,让我们先了解一下问题。

你已经给出了originalPredicate: (Char) -> Boolean,所以它会根据字符返回一个 bool 值。例如,如果它会为“a”、“c”、“e”等返回 true(仅作为示例),那么您必须为它们返回 false,为“b”、“d”、“f”返回 true ”等

因此,您想调用originalPredicate,知道结果(即 true 或 false),然后反转结果并返回它。

val notPredicate: (Char) -> Boolean = { char ->
    val booleanValue = originalPredicate(char)
    return@notPredicate !booleanValue
}

如果您简化步骤,并使用 it 这是 lambda 内变量的默认名称,并且由于 lambda 中的最后一个语句是由其自身返回的(因此您不必编写显式 return ):

val notPredicate: (Char) -> Boolean = { !originalPredicate(it) }

关于kotlin - Lambda 表达式 "Not"谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63225572/

相关文章:

jpa - 如何使用谓词过滤子实体集合?

java - 如何在谓词中对 FilteredList 结果进行优先级排序/排序?

java - Android如何在Java中使用Kotlin-Coroutine?

android - 在 Android Kotlin 中定义自定义数组类型的大小

android - 将 Android 项目转换为使用 Gradle Script Kotlin

python - 如何根据不同的索引对 python 列表进行排序?

java - QueryDSL - 谓词转换 : change root path and check structure

android - 如何使用 Glide 加载数据绑定(bind)图像?

入口集上的 Java 8 流映射

java - 流 : Calculate the difference of totals in one go