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否
精彩链接
发表评论