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

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

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

kotlin十分简便系统为我们提供了一些十分简便的标准库扩展,今天我们就看看这些常规的使用频率比较高的能帮助我们加速开发的标准库吧

let

对于学习Kotlin这门语言的人来说肯定都知道其一个特点---安全,添加了null的数据类型比如var a? = null 那么现实开发中怎么去使用了检测这个null呢?不停的使用if判断显然是不合乎设计的,于是我么的let应运而生

代码语言:javascript
复制
The Kotlin standard library function let can be used for scoping and null-checks.
 When called on an object, let executes the given block of code and 
 returns the result of its last expression. 
The object is accessible inside the block by the reference it.

官方文档中说的很明了let是对标准库的一个扩展,是作为对null 检测的一个扩展

代码语言:javascript
复制
fun letFun() {
    val empty = "test".let {
        customPrint(it)
    }
    println("is empty: $empty")
    fun printNonNull(str: String?) {
        println("Printing \"$str\"")
        str?.let {
            print("\t")
            customPrint(it)
            println()
        }
    }
    printNonNull(null)
    printNonNull("my string")
}

在我们的测试打印中null 和 my string分别作为参数测试时null并没有走let这个闭包,从而可以看出let只有在非null的情况下才会走对应的闭包

run

和let相似,run是标准库的另一个扩展。对于基本的用法和let一样都是内部执行一个闭包并返回自身数据。不同的是run内部走的是一个this的引用,这要说明了内部你可以直接调用对已实例自身的方法

代码语言:javascript
复制
fun runFun() {
    fun getNullableLengt(ns: String) {
        println("for \"$ns\":")
        ns.run {
            println("\tis empty? " + this.isEmpty())
            println("\tlenght =${this.length}")
        }
    }
}

上栗中我们直接使用this调用Sting对应打方法,当然从run的介绍可以看出this是完全可以省略的,我们只是为了让大家看的明显才吧对应的this添加进去而已

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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