首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

聊聊kotlin中run, let, with, apply, also ...

, 觉得用法这么像, 为什么弄出多个名字, 不过仔细看看嘛, 还是略有不同, 待我慢慢道来....kotlin中, run, let, with, apply, also, 都是标准库函数, 它实现可以直接在IDE上跳转看到, 也可以在这里看: Standard.kt 看这些函数实现, 会发现它们非常短...., 它是kotlinextension一个用法: 确切说, 这个run是一个generic extension函数, 对于任何类型T, 扩展了run这个方法, 参数类型是签名”T.() -> R”...关于kotlin extension更详细介绍, 可以查看官网文档 this上下文差异是这两个run用法最大不同 let函数 - public inline fun T.let(block: (T...return this } 剩下apply和also两个函数, 他们和run, let实现又非常相似 apply和T.runblock参数上下文一致 also和T.letblock参数上下文一致

1.2K70
您找到你想要的搜索结果了吗?
是的
没有找到

Kotlin中let、with、run、apply、also常用场景

常见场景使用 let 处理需要针对一个可null对象统一做判空处理 private var textView: TextView?...,可以省去类名重复,直接调用类方法即可 var bean=Bean("小米",12) //没使用 with前 var s1=bean.name+bean.age...with函数传入对象判空问题,在run函数中可以像let函数一样做判空处理 apply 整体作用功能和run函数很像,唯一不同点就是它返回值是对象本身,而run函数是一个闭包形式返回,返回是最后一行值...正是基于这一点差异它适用场景稍微与run函数有点不一样。apply一般用于一个对象实例初始化时候,需要对对象中属性进行赋值。...also 适用于let函数任何场景,also函数和let很像,只是唯一不同点就是let函数最后返回值是最后一行返回值而also函数返回值是返回当前这个对象。一般可用于多个扩展函数链式调用

83210

Kotlin中let()with()run()apply()also()函数使用方法与区别

apply{ //sectionArticle不为空时候操作sectionArticle } 六、内联扩展函数之also 1、also函数使用一般结构 object.also{ //todo...(block: (T) - Unit): T { block(this); return this } 3、also函数inline结构分析 also函数结构实际上和let很像唯一区别就是返回值不一样...而also函数返回则是传入对象本身 4、also函数编译后class文件 //kotlin fun main(args: Array<String ) { val result = "testLet...函数<em>的</em>适用场景 适用于let函数<em>的</em>任何场景,<em>also</em>函数和let很像,只是唯一<em>的</em>不同点就是let函数最后<em>的</em>返回值是最后一行<em>的</em>返回值而<em>also</em>函数<em>的</em>返回值是返回当前<em>的</em>这个对象。...2、动态inflate出一个XML<em>的</em>View<em>的</em>时候需要给View绑定数据也会用到. 3、一般可用于多个扩展函数链式调用 4、数据model多层级包裹判空处理<em>的</em>问题 <em>also</em> fun T.<em>also</em>(block

1.4K20

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

kotlin十分简便系统为我们提供了一些十分简便标准库扩展,今天我们就看看这些常规使用频率比较高能帮助我们加速开发标准库吧 let 对于学习Kotlin这门语言的人来说肯定都知道其一个特点--...不停使用if判断显然是不合乎设计,于是我么let应运而生 The Kotlin standard library function let can be used for scoping and...对于基本用法和let一样都是内部执行一个闭包并返回自身数据。...不同是run内部走是一个this引用,这要说明了内部你可以直接调用对已实例自身方法 fun runFun() { fun getNullableLengt(ns: String) {...this是完全可以省略,我们只是为了让大家看明显才吧对应this添加进去而已

44210

链式操作用法reject用法catch用法all用法race用法

链式操作用法 所以,从表面上看,Promise只是能够简化层层回调写法,而实质上,Promise精髓是“状态”,用维护状态、传递状态方式来使得回调函数能够及时调用,它比传递callback函数要简单...reject用法 到这里,你应该对“Promise是什么玩意”有了最基本了解。那么我们接着来看看ES6Promise还有哪些功能。我们光用了resolve,还没用reject呢,它是做什么呢?...catch用法 我们知道Promise对象除了then方法,还有一个catch方法,它是做什么用呢?...all用法 Promiseall方法提供了并行执行异步操作能力,并且在所有异步操作执行完后才执行回调。...race用法 all方法效果实际上是「谁跑慢,以谁为准执行回调」,那么相对就有另一个方法「谁跑的快,以谁为准执行回调」,这就是race方法,这个词本来就是赛跑意思。

4.3K20

【Kotlin】标准库函数 ③ ( with 标准库函数 | also 标准库函数 )

函数 参数 ; with 函数原型 : /** * 以给定[receiver]作为接收者调用指定函数[block]并返回其结果。...(str) } 执行结果 : Hello 二、also 标准库函数 ---- also 函数 功能与 let 函数 功能 类似 ; also 函数 将 接收者 ( 函数调用者 ) 作为参数传递给 Lambda...表达式参数 , 并返回 接收者实例对象本身 ; also 函数 与 let 函数 返回值不同 , also 函数 返回 接收者对象本身 , let 函数 返回 Lambda 表达式最后一行 ; also...函数 返回 接收者对象本身 , 那么就可以使用该特性 , 对 接收者 执行 函数式编程 链式调用 ; 代码示例 : fun main() { val str = "hello".also {...println(it) }.also { // 该对象生命周期仅限于该闭包 println(it.capitalize()) }

75710

amazement用法_release用法

大家好,又见面了,我是你们朋友全栈君。...Mutex中提供了WiteOne,ReleaseMutex 两个实例方法~ WiteOne作用是”阻塞当前线程,提供对该线程原子操作” 也就是说当一个线程遇到WiteOne时候,如果在WiteOne...里面没有线程在操作,则此线程进去操作 而里面有线程时候,所有到此线程均需要排队等候里面的线程执行完毕~ 而控制这样操作结束标记就是使用ReleaseMutex 方法!...,此变量就会加锁,而其他线程是无法访问,只能挂起等候此变量解锁 我感觉实际上使用也就是Mutex来实现 好了开始说说具体实现吧 public class MutexTest { private...//等待获得对a权利 a++ //保护部分 ReleaseMutex......

3.3K30

patch用法_以用法

,diff功能就是用来比较两个文件不同,然后记录下来,也就是所谓diff补丁。...,patch就是利用diff制作补丁来实现源文件(夹)和目的文件(夹)转换。...补丁头 补丁头是分别由—/+++开头两行,用来表示要打补丁文件。...它通常由一部分不用修改东西开始和结束。他们只是用来表示要修改位置。他们通常以@@开始,结束于另一个块开始或者一个新补丁头。...块缩进 块会缩进一列,而这一列是用来表示这一行是要增加还是要删除。 块第一列 +号表示这一行是要加上。 -号表示这一行是要删除。 没有加号也没有减号表示这里只是引用而不需要修改。

5K10

chmod用法_crontab用法

整理一下chmod用法,给自己看~~~~ 语法 chmod [-cfvR] [--help] [--version] mode file......参数说明: -c : 若该文件权限确实已经更改,才显示其更改动作 -f : 若该文件权限无法被更改也不要显示错误讯息 -v : 显示权限变更详细资料 -R : 对目前目录下所有文件与子目录进行相同权限变更...u 表示该文件拥有者,g 表示与该文件拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。 ‘+’ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。...另外,可用数字代替,语法为: chmod abc file 其中a,b,c各为一个数字,分别表示User、Group、及Other权限。...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

6.9K40
领券