1.with基本上和run一样,只是使用方式不一致
info.run、with(info)
2.with函数返回类型是根据匿名函数最后一行的类型变化而变化
with 函数里面持有的是this
3.具名操作
package Stage3
fun main() {
val info="kotlin"
//具名操作
//this==info 等价info传入到isLength1()中
var r1=with(info,::isLength1)
//this==r1
var r2= with(r1,::isNormal1)
//this==r2
var r3= with(r2, ::println)
}
fun isNormal1(b: Boolean)=if(b)"合格" else "不合格"
fun isLength1(s: String)=if(s.length>5) true else false
执行结果
4.匿名写法
package Stage3
fun main() {
val info="kotlin"
//具名操作
//this==info 等价info传入到isLength1()中
var r1=with(info,::isLength1)
//this==r1
var r2= with(r1,::isNormal1)
//this==r2
var r3= with(r2, ::println)
//匿名写法
with(with(with(info){
if(length>5) true else false
}){
if(this)"合格" else "不合格"
}){
println(this)
}
}
fun isNormal1(b: Boolean)=if(b)"合格" else "不合格"
fun isLength1(s: String)=if(s.length>5) true else false
执行结果