厦门高端网站建设公,软件项目和网站建设的区别,网站建设托管定制,深圳网站制作十年乐云seo品牌实例代码
User(val userName:String,val age:Int){fun printName(){println(userName)}fun getUserName():String{return userName}} let 函数
let 函数常用来与对象的空判断一起用#xff0c;起到作用于的限定效果。let 函数最后一行返回值。#xff08;比如实例需要let函…实例代码
User(val userName:String,val age:Int){fun printName(){println(userName)}fun getUserName():String{return userName}} let 函数
let 函数常用来与对象的空判断一起用起到作用于的限定效果。let 函数最后一行返回值。比如实例需要let函数返回一个处理后的字符串值则最后一行直接返回一个字符串
val param:User? null//let 的用法判空
val uName param?.let{//it//在这个闭包内部 it 指代非空的param 参数it.printName()//闭包内最后一个代码执行的结果即为返回值it.getUserName() //返回一个字符串对象
}
run 函数
run 函数和let 函数非常相似但是有一点不同闭包内部不再像let函数中指定it代表对象run 函数的闭包直接是this可以简单理解为 run 方法扩展函数内部代用该对象的任何函数和属性就是在该对象内部调用一样不再需要通过实例对象。看代码
val param:User? nullval uName param?.run{ //this//在这个闭包内部 this 指代非空的User 对象printName() //因为run 内部所有调用都相当于在User对象内部所以可以不用thisthis.printName() //闭包内最后一个代码执行的结果即为返回值this.getUserName() //返回一个字符串对象.
}
with 函数
适用于调用同一个类的多个方法时可以省去类名重复直接调用类的方法即可有点和run方法相似但是with函数不是一个扩展函数是一个一般函数直接调用。返回值仍然是最后一行代码执行的结果。
val param:User? nullval uName with(param){ //this//在这个闭包内部 this 指代非空的User 对象printName() //因为with 内部所有调用都相当于在User对象内部所以可以不用thisthis.printName() //闭包内最后一个代码执行的结果即为返回值this.getUserName() //返回一个字符串对象.
}
apply 函数
apply 有点类似于 with 与run 的结合但是不同的是返回值不再是代码的最后一行的结果而是返回对象本身。
val param:User? nullval newUser:User? null val newUser param?.apply{ //this//在这个闭包内部 this 指代非空的User 对象printName() //因为apply 内部所有调用都相当于在User对象内部所以可以不用thisthis.printName() this.getUserName() //这里不再返内容而是直接返回param对象
}
also 函数
also 有点类似于let 与run 的结合但是不同的是返回值不再是代码的最后一行的结果而是返回对象本身闭包内部不再是this对象而是it
val param:User? nullval newUser:User? null val newUser param?.apply{ //it//在这个闭包内部 it指代非空的param 对象it.printName()it.getUserName() //这里不再返内容而是直接返回param对象
}
这个方法非常类似灵活应用即可。主要却别返回值和闭包内的作用域