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 教程。