let

1.let函数返回类型,是根据匿名函数的最后一行变化而变化 2.let函数中的匿名函数里面持有的是it == 集合自身

fun main() {

var num1 = 1

var num2 = 1

var result:Int

result = num1 + num2

var str = result?.let {//传入本身,it指代本身即result,result不为空则执行let,为空则不执行

println("传进来的值为${it}")

"${num1} + ${num2} = ${result}" //此处为返回的值

}?:"传进来的值为null"

print(str)

}

传进来的值为2 1 + 1 = 2

apply

apply: info:apply

1.apply函数返回类型,都是info自身 2.apply函数中的匿名函数里面持有的是this == info自身

run

run:str.run

1.run函数返回类型,是根据匿名函数最后一行变化而变化 2.run函数中的匿名函数里面持有的是this == str自身

fun runFunction(){

val str = "yuknight"

val r = str.run {

//this == str

true

}

println(r)

//run中匿名函数

val strRun = str.run {

str.length > 5

}

.run {

if (this) "字符串合格" else "字符串不合格"

}

.run {

"[$this]"

}

println(strRun)

//run中使用具名函数

val strRun1 = str.run(::isLong)

.run(::showText)//::表示引用函数

.run(::mapText)

println(strRun1)

}

fun isLong(str: Stri

true [字符串合格] [字符串合格]

with

with with(str) 1.with函数返回类型,是根据匿名函数最后一行变化而变化 2.with函数中的匿名函数里面持有的是this == str自身. 3.跟run在使用的时候不一样

fun isLong(str: String) = str.length > 5

fun showText(isLong: Boolean) = if (isLong) "字符串合格" else "字符串不合格"

fun mapText(getShow: String) = "[$getShow]"

fun getStrLen(str: String) = str.length

fun getLenInfo(len: Int) = "字符长度:$len"

fun getInfoMap(info: String) = "[$info]"

fun getshow(content: String) = println(content)

fun withMethod() {

val str = "yuknight"

val length = with(str) {

this.length//this == str //返回类型为匿名函数里面最后一行

}

println(length)

val r1 = wi

与run不同的是width需要传入参数

also

also str.also

1.also函数返回类型,都是str自身 2.also函数中的匿名函数里面持有的是it == str自身.

fun alsoMethod() {

val str = "YuKnight"

str.also {

it.length //it == str

println("$it") //返回值为str自身

}

//str.also特点,可以链式调用

str.also {

println("str原始数据是:$it")

}.also {

println("str转换成小写:${it.toLowerCase()}")

}.also {

println("链式调用结算 ${it}")

}

}

YuKnight str原始数据是:YuKnight str转换成小写:yuknight 链式调用结算 YuKnight

总结

方法返回值自身指代是否传参let最后一行it否apply自身this否run最后一行this否with最后一行this是also自身it否

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: