前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kotlin标准库扩展之 let run apply also(二)

kotlin标准库扩展之 let run apply also(二)

作者头像
大话swift
发布2019-09-17 15:57:24
6250
发布2019-09-17 15:57:24
举报
文章被收录于专栏:大话swift

我了方便大家阅读很不至于疲劳我们把整个拆分为两步分,接着下部分我们将with

with

with同样也是标准库的一个扩展,不同的是它不是功能性的扩展,他只是起一个承接的作用方便大家标识和转呈

代码语言:javascript
复制
fun withFun() {
    class Configuration(var host: String, var port: Int)
val configuration = Configuration(host = "127.0.0.1",
    port = 9800)

    with(configuration) {

    }.run {

    }.let {

    }
    with("A"){
        this.isBlank()
    }
    print("${configuration}")
}

上栗中我们分别举了一个自定义类和一个String的粒子,我们看到,内部同样是采用的this作为原有实例的引用,我们很方便的机型原有实例的调用

也就是说:with其实没啥具体的功能性作用,只是为了书写方便美观使代码更加美观……

apply

apply这个比较重要了,相信对于有JS基础的朋友这个特性并不陌生:applay内部执行一个block并且返回实例itself(自身)。这个在前面的几个中有很多的区别之前的都是返回一个object实例,也就是说这个处理返回数据并且返回的是自身,因此这个也早就了了它的作用目的可以作为数据初始化使用

代码语言:javascript
复制
fun applyFun() {
    data class Person(
        var name: String,
        var age: Int,
        var about: String
    ){
        constructor():this("",0,"")
    }

    val jake = Person()
  val desc =  jake.apply {
        this.name = "Jack"
        this.age = 30
        this.about  = "Android developer"
    }.toString()
    println(desc)
}

上栗中我们实例化了一个Person的无参构造的实例,然后使用apply进行其余属性的初始化赋值

also

与apply类似also也是对实例的扩展,它同样执行的是block和进行返回。不同的是它采用it走位引用,因此它多用于内部传值。比如说在链式调用中进行日志输出查看、

代码语言:javascript
复制
fun alsoFun() {
    class Person(val name: String, val age: Int, val about: String)

    val jacke = Person("Jack", 30, "Amdroid developer")
        .also {
            print("$it")
        }
}

到此我们今天的标准库扩展就告一段落,下面是一个综合的调用

代码语言:javascript
复制
  val jacke = Person("Jack", 30, "Amdroid developer")
        .also {
            print("$it")
        }
    with(Person()) {
        this.apply {
            name = "Lee"
            age = 30
            about = "iOS/Android developer"
        }.run {
            hell()
        }
    }.also {
        print(it)
    }
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大话swift 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档