Lambda 表达式 "Not" 谓词

Lambda expressions "Not" predicate

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

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

提前致谢!

问题:

"写一个 predicate 接受 originalPredicate: (Char) -> Boolean 变量和 returns 取反的结果。你的 predicate 是过滤一个字符串。"

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

你是这个意思吗:

val originalPred :(Char) -> Boolean =  {it>'a'}
val somePred :(Char) -> Boolean =  {!originalPred.invoke(it)}

请注意,it>'a' 只是一个示例。

那么,我们先了解一下问题吧

你给了originalPredicate: (Char) -> Boolean,所以它会return一个布尔值,根据字符。例如,如果 return 为 'a'、'c'、'e' 等(只是一个例子),那么你必须 return false 'b'、'd'、'f' 等

所以,您想调用 originalPredicate,知道结果(即 true 或 false)然后反转结果,然后 return 它。

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

如果你简化步骤,并使用 it 这是 lambda 中变量的默认名称,并且由于 lambda 中的最后一条语句是 return 本身(所以你没有写明确 return) :

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