🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 参考文章: [函数类型实例化](http://www.kotlincn.net/docs/reference/lambdas.html#%E5%87%BD%E6%95%B0%E7%B1%BB%E5%9E%8B%E5%AE%9E%E4%BE%8B%E5%8C%96) 1. Kotlin和Java8一样,如果把函数转换成一个值,你就可以传递它. 2. 成员引用,提供了简明语法,来创建一个调用单个方法或者访问单个属性的函数值. 3. 成员引用属性 `Person::age` 4. 引用顶层函数 5. 构造方法引用存储或延期执行创建类实例的动作 6. 成员引用引用拓展函数 ### 成员引用 ~~~ class Person(val name: String, val age: Int) fun main(args: Array<String>) { val person = Person("billy", 18) //打印姓名 println(person.name)//billy //成员引用的方式打印 val kProperty1 = Person::name kProperty1(person) } ~~~ ### 引用顶层函数 ~~~ //顶层函数 fun salute() = println("Salute!") fun main(args: Array<String>) { //成员引用引用顶层函数 run(::salute)//Salute! } ~~~ ### 成员函数引用构造方法 ~~~ data class Person(val name: String, val age: Int) fun main(args: Array<String>) { val createPerson = ::Person val p = createPerson("Alice", 29) println(p)//Person(name=Alice, age=29) } ~~~ ### 成员引用引用拓展函数 ~~~ data class Person(val name: String, val age: Int) fun Person.isAdult() = age >= 21 fun main(args: Array<String>) { val person = Person("billy", 22) val predicate = Person::isAdult println(predicate(person))//true } ~~~