簡體   English   中英

Lambda 表達式“非”謂詞

[英]Lambda expressions “Not” predicate

我目前正在學習 Kotlin 並希望成為一名開發人員,但我遇到了一個問題,無法找出答案(即使經過廣泛的谷歌研究)。

如果有人可以幫助我並解釋他們的解決方案,將不勝感激。 :)

先感謝您!

問題:

“編寫一個采用 originalPredicate 的謂詞:(Char) -> Boolean 變量並返回否定結果。您的謂詞是過濾字符串。”

實現:val notPredicate: (Char) -> Boolean = TODO("提供實現")

所以,讓我們先了解問題。

您已經給出originalPredicate: (Char) -> Boolean ,因此它將根據字符返回 Boolean 值。 例如,如果它會為 'a'、'c'、'e' 等返回 true(只是一個示例),那么您必須為它們返回 false,並且為 'b'、'd'、'f 返回 true ', ETC。

所以,你想調用originalPredicate ,知道結果(即真或假),然后反轉結果,然后返回它。

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

如果您簡化步驟,並使用it作為 lambda 中變量的默認名稱,並且由於 lambda 中的最后一條語句自行返回(因此您不必編寫顯式返回):

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

你是這個意思嗎:

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

注意, it>'a'只是一個例子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM