Kotlin扩展方法和匿名扩展方法
普通扩展方法
- 格式
fun 类名.方法名(参数列表):返回值类型{
方法体
}
- 使用举例
data class A(var name:String, var age:Int)
fun A.printInfo(){
println("name=${this.name},age=${this.age}")
}
fun main() {
val my = A("yww",18)
my.printInfo()
}
-
运行结果
-
小结
可以看出扩展方法可以为一定义好的类添加一个新定义的方法,就和定义该类时已经定义了该方法效果一样
匿名扩展方法
- 格式
类名.()->返回值类型{
方法体
}
- 使用举例
package org.example
data class A(var name:String, var age:Int)
fun A.printInfo(){
println("name=${this.name},age=${this.age}")
}
fun printSp1(context:A, block: A.()->Unit){
block(context)
}
fun A.printSp2(block: A.()->Unit){
block(this)
}
fun main() {
val my = A("yww",18)
my.printInfo()
printSp1(my){
this.name = "sp1"
this.age = 18
}
my.printInfo()
my.printSp2{
this.name = "sp2"
this.age =19
}
my.printInfo()
}
- 运行结果
- 小结
- 一般匿名扩展方法用在函数参数里
- kotlin中如果函数的最后一个参数是lambda表达式,那么这个lambda表达式可以写在函数调用的小括号外边