Kotlin--高阶函数

162 阅读1分钟

fun main(args: Array) {

val alist = arrayListOf<Int>(1,2,3,4)
val blist = arrayListOf<String>("a","dd", "","e")
alist.forEach {
    it -> println(it)
}

//这种写法是函数引用,要求类型一致
alist.forEach(::println)

val vistor=Vistor()
val x = vistor::hello
println(x("mike"))

val a = "abc"
a.isNotEmpty()

public inline fun Iterable.filter(predicate: (T) -> Boolean): List

{

    return filterTo(ArrayList<T>(), predicate)

}

//filter需要一个参数, 这个参数是一个函数,函数的类型是 一个参数T,返回Boolean类型的函数
//String::isNotEmpty隐含一个参数,就是调用实例对象的本身,真正调用的是 xx.isNotEmpty()
blist.filter(String::isNotEmpty)

val pdfPrinter = PdfPrinter()
blist.forEach(pdfPrinter::printPdf)

}

class PdfPrinter(){ fun printPdf(any: Any){ println(any) } }

class Vistor { fun hello(name:String){ println("hello $name") } }