Kotlin特性

来源:互联网 发布:通过端口查看进程 编辑:程序博客网 时间:2024/05/20 11:27

目录

    • 目录
      • lazy
      • lateinit
      • let
      • apply

lazy

lazy 是 Kotlin 的属性代理的一个实例,它提供了延迟加载的机制。换句话说,这里的 lazy 提供了初始化 aTextView 的方法,不过真正初始化这个动作发生的时机却是在 aTextView 第一次被使用时了。

class Person(val name:String,val age:Int)class Demo{    val person:Person by lazy {        println("初始化")        Person("Mr.J",22)    }}fun main(args: Array<String>) {    val demo = Demo()    readLine()    demo.person}

lateinit

lazy 只能初始化 val 啊,万一我要定义一个 var 成员,又需要延迟初始化,关键还不为 null,怎么办??

class Person(val name:String,val age:Int)class Demo{    lateinit var person:Person    fun initPerson(){        person = Person("Mr.j",14)    }}fun main(args: Array<String>) {     Demo().initPerson()}

let

class Person(val name:String,val age:Int){    fun work(){        println("name = $name age = $age")    }}fun main(args: Array<String>) {    val person = Person("Mr.J",15)    person.let {        it.work()    }

apply

class Person(val name:String,val age:Int){    fun work(){        println("name = $name age = $age")    }}fun main(args: Array<String>) {    val person = Person("Mr.J",15)    person.apply {        work()    }}
原创粉丝点击