Kotlin扩展方法和匿名扩展方法

发布时间 2024-01-08 16:53:43作者: tomhex

普通扩展方法

  • 格式
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()

}
  • 运行结果
    image

  • 小结
    可以看出扩展方法可以为一定义好的类添加一个新定义的方法,就和定义该类时已经定义了该方法效果一样

匿名扩展方法

  • 格式
类名.()->返回值类型{
	方法体
}
  • 使用举例
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()

}
  • 运行结果
    image
  • 小结
    • 一般匿名扩展方法用在函数参数里
    • kotlin中如果函数的最后一个参数是lambda表达式,那么这个lambda表达式可以写在函数调用的小括号外边