1、apply
apply函数可与看做是一个配置函数,传入一个对象,返回一个配置好的对象,在作用域内可以直 接调用该对象的任意方法:
class Student{
var name:String?=null
var age:Int?=null
}
fun main(){
class Student{
var name:String?=null
var age:Int?=null
}
fun main(args: Array<String>) {
val studentInfo= Student().apply {
name="小明"
age=20
}
print(studentInfo)
}
}
作用:简化对象的初始化
2、let
let函数使摸个变量作用于lambda表达式里,让it关键字引用它
```java
fun main() {
val restlt= listOf(6,7,8,9).get(3).let {
it*it
}
print(restlt)
}
输出:81```
let和apply区别:
①、let会把接收者传给lambda,apply什么都不传
②、匿名函数执行完,apply会返回当前接收者,let会返回lambda的最后一行
3、run
fun main() {
val str="午饭吃什么"
val result=str.run {
contains("吃")
}
print(result)
}
输出:true
run函数执行函数引用:
fun main() {
"my name is jack"
.run(::isLong)
.run(::show)
.run(::println)
}
fun isLong(name:String)=name.length>=10
fun show(isLong: Boolean):String{
return if (isLong){
"name is jd"
}else{
"please create new name"
}
}
run和apply比较:
只看作用域,run和apply差不多,但是ran不返回接收者,返回的是lanbda结果,true或者false,也可返回其它类型