Kotlin 遍历筛选器列表以应用它们

Kotlin 遍历筛选器列表以应用它们,kotlin,filter,Kotlin,Filter,我在列表上有一些过滤器(10..1000)。 我想要一个函数对象列表,遍历这个列表并将过滤器应用到(10..1000)。 也许以后会选择一些过滤器 fun main(args: Array<String>) { var sol = (10..1000).toList().filter(lastDigitIsLength ).filter(no7andNo1 ).filter(isEvenAndGreater1).filter(first2DigitsOddCrossSumLe

我在列表上有一些过滤器(10..1000)。 我想要一个函数对象列表,遍历这个列表并将过滤器应用到(10..1000)。 也许以后会选择一些过滤器

fun main(args: Array<String>) {
    var sol = (10..1000).toList().filter(lastDigitIsLength ).filter(no7andNo1 ).filter(isEvenAndGreater1).filter(first2DigitsOddCrossSumLess10 ).filter(isPrime )
println("The number is $sol")

}
/* The functions exist
fun main(args:Array){
var sol=(10..1000).toList().filter(lastdigitslength).filter(no7和no1).filter(isEvenAndGreater1).filter(first2digitsoddcrossumles10).filter(isPrime)
println(“编号为$sol”)
}
/*这些功能是存在的

实现这一点的方法很少。
我在我的示例中列出了它们,以及一些一般性的评论

// No need for varargs since Kotlin 1.3
fun main() {
    // Prefer vals over vars
    val sol = (10..1000).
            asSequence().// Use asSequence instead of toList
            filter { lastDigitIsLength(it) }. // Block
            filter(::no7andNo1). // Method reference
            toList()
    println("The number is $sol")

}

// Don't know what it means, so lets just always return true
fun lastDigitIsLength(i: Int) = true // Short notation

fun no7andNo1(i: Int): Boolean {
    return i % 10 == 7 || i % 10 == 1
}

有几种方法可以做到这一点。
我在我的示例中列出了它们,以及一些一般性的评论

// No need for varargs since Kotlin 1.3
fun main() {
    // Prefer vals over vars
    val sol = (10..1000).
            asSequence().// Use asSequence instead of toList
            filter { lastDigitIsLength(it) }. // Block
            filter(::no7andNo1). // Method reference
            toList()
    println("The number is $sol")

}

// Don't know what it means, so lets just always return true
fun lastDigitIsLength(i: Int) = true // Short notation

fun no7andNo1(i: Int): Boolean {
    return i % 10 == 7 || i % 10 == 1
}

对不起,也许我误解了你的问题。是否要将筛选器列表应用于整数列表?如果是,可以这样做:

fun filter(list: List<Int>, filters: List<(Int) -> Boolean>): List<Int> {
    var result = list
    for (filter in filters) {
        result = result.filter(filter)
    }

    return result
}

对不起,也许我误解了你的问题。是否要将筛选器列表应用于整数列表?如果是,可以这样做:

fun filter(list: List<Int>, filters: List<(Int) -> Boolean>): List<Int> {
    var result = list
    for (filter in filters) {
        result = result.filter(filter)
    }

    return result
}

功能完成了。现在,如果我将过滤器放入一个列表filter=listOf(no7andno1,isPrime)。如何遍历它并应用过滤器?功能已经完成。现在,如果我将过滤器放入一个列表filter=listOf(no7andno1,isPrime)。如何遍历它并应用过滤器?