Kotlin 谓词
最后修改于 2024 年 1 月 29 日
本文介绍了如何在 Kotlin 中使用谓词。
谓词
谓词通常是指关于某事物的陈述,要么为真,要么为假。在编程中,谓词代表返回布尔值的单个参数函数。
Kotlin 谓词示例
以下示例创建了一个简单的 Kotlin 谓词。
main.kt
fun main() { val vals = listOf(1, 2, 0, 5, -4, 5, -6, 7, 8, 3) val r = vals.find { e -> isNegative(e) } println(r) } fun isNegative(e: Int): Boolean { return e < 0 }
在这个例子中,谓词用于过滤掉正值。
val vals = listOf(1, 2, 0, 5, -4, 5, -6, 7, 8, 3)
我们有一个整数值列表。
val r = vals.find { e -> isNegative(e) }
find
函数返回与给定谓词匹配的第一个元素,如果未找到这样的元素,则返回 null。我们传递了 isNegative
函数。
fun isNegative(e: Int): Boolean { return e < 0 }
isNegative
函数对每个大于零的值返回 true。
以下是前一个示例的一个小修改。
main.kt
fun main() { val vals = listOf(1, 2, 0, 5, -4, 5, -6, 7, 8, 3) val r = vals.find { isNegative(it) } println(r) } fun isNegative(e: Int): Boolean { return e < 0 }
在这个例子中,我们使用 it
: 单个参数参数的隐式名称。
Kotlin 匿名谓词
在下一个例子中,我们使用一个匿名谓词函数。
main.kt
fun main() { val vals = listOf(1, 2, 0, 5, -4, 5, -6, 7, 8, 3) val r = vals.find { e -> e < 0 } println(r) }
在这个例子中,谓词被定义为匿名 lambda 表达式。
最后,我们有一个带有 it
的 lambda 表达式。
main.kt
fun main() { val vals = listOf(1, 2, 0, 5, -4, 5, -6, 7, 8, 3) val r = vals.find { it < 0 } println(r) }
这是最短的语法。
Kotlin 过滤谓词示例
filter
函数返回一个仅包含与给定谓词匹配的元素的列表。
main.kt
fun main() { val vals = listOf(1, 2, 0, 5, -4, 5, -6, 7, 8, 3) val r1 = vals.filter { it < 0 } println(r1) val r2 = vals.filter { it > 0 } println(r2) }
在这个例子中,我们过滤掉了负值和正值。
Kotlin 谓词多重条件
以下示例使用带有两个条件的谓词。
main.kt
data class Country(val name: String, val population: Int) fun main() { val countries = listOf( Country("Iran", 80840713), Country("Hungary", 9845000), Country("Poland", 38485000), Country("India", 1342512000), Country("Latvia", 1978000), Country("Vietnam", 95261000), Country("Sweden", 9967000), Country("Iceland", 337600), Country("Israel", 8622000) ) val r = countries.filter { it.name.startsWith("I") && it.population > 100_000 } r.forEach { println(it) } }
我们创建一个国家/地区列表。 我们找到所有以“I”开头且人口超过一百万的国家/地区。
val r = countries.filter { it.name.startsWith("I") && it.population > 100_000 }
我们使用 and 运算符组合两个表达式。
Kotlin 否定谓词
我们有否定给定谓词的函数。
main.kt
fun main() { val words = listOf( "falcon", "cup", "wood", "tree", "top", "car", "rock", "cloud", "new", "rain", "forest" ); val r = words.filterNot { it.length == 3 } println(r) }
使用 filterNot
,我们找到所有与给定谓词不匹配的元素。我们找到所有长度不是三个拉丁字符的字符串。
来源
在本文中,我们介绍了 Kotlin 中的谓词。
作者
列出 所有 Kotlin 教程。