x.isEmpty() } collection.filte-6ren">
gpt4 book ai didi

kotlin - 是否可以在 Kotlin 的集合过滤中使用功能接口(interface)?

转载 作者:行者123 更新时间:2023-12-02 13:06:46 26 4
gpt4 key购买 nike

以下代码编译:

val collection = listOf("a", "b")
val filter = { x: String -> x.isEmpty() }
collection.filter(filter)
是否可以使用函数接口(interface)定义过滤器?
例如以下代码无法编译:
fun interface MyFilter {
fun execute(string: String): Boolean
}
val filter = MyFilter { x -> x.isEmpty() }
给出编译错误
Type mismatch.
Required:
(TypeVariable(T)) → Boolean
Found:
MyFilter

最佳答案

你可以继承MyFilter来自 (String) -> Boolean

fun interface MyFilter : (String) -> Boolean

fun main() {
val collection = listOf("a", "b")
val filter = MyFilter { x -> x.isEmpty() }
val newCollection = collection.filter(filter)
}
使用您的自定义方法:
fun interface MyFilter : (String) -> Boolean {
override operator fun invoke(p1: String): Boolean = execute(p1)
fun execute(param: String): Boolean
}
但它仅适用于 jvmTarget = 1.8 (or higher)-Xjvm-default=all

关于kotlin - 是否可以在 Kotlin 的集合过滤中使用功能接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64195427/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com