kotlin学习3

作者: 思思入扣 | 来源:发表于2019-07-08 22:27 被阅读0次
  1. by
    kotlin 中的委托模式依靠by关键字,语法定义:
    val/var 属性名:属性的数据类型 by 代理类
    使用场景:
    (1) 延迟加载属性(lazy property):属性值只在初次访问时才会计算
    (2) 可观察属性(observable property):属性发生变化时,可以向监听器发生通知
    (3) 将多个属性保存在一个map内,而不是保存在多个独立的域内
  2. lazy(延迟加载)
    lazy()是一个函数, 接受一个Lambda表达式作为参数, 返回一个Lazy类型的实例,这个实例可以作为一个委托, 实现延迟加载属性(lazy property): 第一次调用 get() 时, 将会执行 lazy() 函数受到的Lambda 表达式,然后会记住这次执行的结果, 以后所有对 get() 的调用都只会简单地返回以前记住的结果.
val no: Int by lazy {
    200
}
val c = 200
fun main(args: Array) {
    val b = 200
    println(no) // Log : 200
}

注:
(1) var类型属性不能设置为延迟加载属性,因为在lazy中并没有setValue(…)方法
(2)lazy操作符是线程安全的。如果在不考虑多线程问题或者想提高更多的性能,也可以使

  1. run
    (1) 调用run函数块。返回值为函数块最后一行,或者指定return表达式
val a = run {
    println("run")
    return@run 3
}
println(a)

运行结果:
run
3
(2) 调用某对象的run函数,在函数块内可以通过 this 指代该对象。返回值为函数块的最后一行或指定return表达式

val a = "string".run {
    println(this)
    3
}
println(a)

运行结果

  1. apply
    调用某对象的apply函数,在函数块内可以通过 this 指代该对象。返回值为该对象自己
val a = "string".apply {
    println(this)
}
println(a)

运行结果:
string
string

  1. let
    调用某对象的let函数,则该对象为函数的参数。在函数块内可以通过 it 指代该对象。返回值为函数块的最后一行或指定return表达式
val a = "string".let {
    println(it)
    3
}
println(a)

运行结果:
string
3

  1. also
    调用某对象的also函数,则该对象为函数的参数。在函数块内可以通过 it 指代该对象。返回值为该对象自己
val a = "string".also {
    println(it)
}
println(a)

运行结果:
string
string

  1. with
    with函数和前面的几个函数使用方式略有不同,因为它不是以扩展的形式存在的。它是将某对象作为函数的参数,在函数块内可以通过 this 指代该对象。返回值为函数块的最后一行或指定return表达式
val a = with("string") {
    println(this)
    3
}
println(a)

运行结果:
string
3

参考:https://www.jianshu.com/p/a3e44ce16403
https://www.cnblogs.com/duduhuo/p/6934137.html

相关文章

  • Kotlin学习之基础语法

    写在前面的:1,Kotlin学习之基础语法2,Kotlin学习之类和继承3,Kotlin学习之属性和字段4,Kot...

  • Kotlin

    Kotlin 学习地址总结 1 . 官网教程2 . Anko GitHub3 . Kotlin Resourc...

  • kotlin学习3

    bykotlin 中的委托模式依靠by关键字,语法定义:val/var 属性名:属性的数据类型 by 代理类使用场...

  • Kotlin学习3

    1kotlin可空性 提前在编译期强迫重视null问题除非另有规定,变量不能为null值。为了避免NullPoin...

  • Kotlin学习之Kotlin初识

    Kotlin学习之Kotlin初识 @(Kotlin学习) 一、什么是Kotlin? Kotlin,是JetBra...

  • Kotlin学习笔记:类和接口

    Kotlin学习笔记:概述Kotlin学习笔记:基本语法和函数Kotlin学习笔记:类和接口Kotlin学习笔记:...

  • Kotlin学习笔记:概述

    Kotlin学习笔记:概述Kotlin学习笔记:基本语法和函数Kotlin学习笔记:类和接口Kotlin学习笔记:...

  • Kotlin 学习笔记:基本语法和函数

    Kotlin学习笔记:概述Kotlin学习笔记:基本语法和函数Kotlin学习笔记:类和接口Kotlin学习笔记:...

  • Kotlin学习笔记:注解和反射

    Kotlin学习笔记:概述Kotlin学习笔记:基本语法和函数Kotlin学习笔记:类和接口Kotlin学习笔记:...

  • Kotlin学习笔记:泛型

    Kotlin学习笔记:概述Kotlin学习笔记:基本语法和函数Kotlin学习笔记:类和接口Kotlin学习笔记:...

网友评论

    本文标题:kotlin学习3

    本文链接:https://www.haomeiwen.com/subject/eovchctx.html