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") } }