Kotlin的标准函数是指 Standard.kt 文件中定义的函数,任何Kotlin代码都可以自由地调用所有的标准函数。
内置函数的总结:
let:
1.let函数返回类型,是根据匿名函数最后一行的变化而变化
2.let函数的匿名函数里持有的是it == 集合本身
apply:
1.apply函数返回以及返回类型,一直都是info,如果是aaa,则需要时aaa.length()
2.apply函数的 匿名函数里持有的是this == info本身
run:
1.run函数返回类型,是根据匿名函数最后一行的变化而变化 (此条==let)
2.run函数的匿名函数里持有的this == str本身 (此条和apply一样)
with :
1.with 函数返回类型,是根据匿名函数最后一行的变化而变化 (此条==let)
2.with 函数的匿名函数里持有的this == str本身 (此条和apply一样)
1.with 函数
首先先从with函数开始,with函数接受两个参数,第一个参数可以是一个任意类型的对象,第二个参数是一个Lambda表达式。with函数会在Lambda表达式中提供第一个参数对象的上下文,并且使用Lambda表达式中的最后一行代码作为返回值进行返回,代码如下:
val with = with(obj) { //这里是 obj 的上下文 "value" //with 函数的返回值 }
那么这个函数有什么用? 它可以在连续操作同一个对象的多个方法时让代码变得精简,下面描述一个具体的例子:
var name1:String = "wanglongjiang" 普通操作 name1.replace('g', 'p') name1.replace('a','b') println(name1) 使用with表达式 val withtest = with(name1){ replace('g', 'p') replace('a','b') “println(this)” }
2.run函数
run函数的用法和使用场景和上面with类似,只是稍微做了一些语法的改动。首先run函数通常不会直接调用,而是要在某个对象的基础上调用;其实run函数只接受一个Lambda参数,并且在Lambda表达式中提供调用对象的上下文。其它方面和with一样,包括也会使用Lambda表达式中的最后一行代码作为返回值返回。示例如下:
val result = obj.run { //这里是obj的上下文 "value" //run函数的返回值 }
val runtest = name1.run { replace('g', 'p') replace('a','b') "runtest" } println(runtest)
3.apply函数
apply函数和run函数也是及其类似,都是要在某个对象上调用,并且只接受一个Lambda参数,也会在Lambda表达式中提供对象的上下文,但是apply函数无法定义返回值,而是会自动返回调用对象本身,示例代码如下:
val result = obj.apply { //这里是obj的上下文 } //result == obj
val applytest = name1.apply { replace('g', 'p') replace('a','b') "runtest" 无效 } println(applytest) 返回对象本身
4.let 函数
1.let函数返回类型,是根据匿名函数最后一行的变化而变化
2.let函数的匿名函数里持有的是it == 集合本身
val lettest = name1.let { it.replace('g', 'p') it.replace('a','b') "runtest" } println(lettest)