四、标准函数和静态方法(Kotlin)

2022-12-31 08:06:49

一、标准函数

标准函数:定义在 Standard.kt 文件中的函数。

1. with函数

需要传入两个参数。第一个参数是任意类型的对象;第二个参数是一个Lambda表达式

with函数会在Lambda表达式中提供 第一个参数对象的上下文,并使用Lambda表达式中的最后一行代码作为返回值。

作用:可以在连续多次调用同一个对象的方法时让代码变得更加精简。

 

实例:


fun main(){
    
    val list = listOf("Apple","Banana","Orange","Pear","Grape")

    val builder = StringBuilder()
    builder.append("Start eating fruit.\n")
    for(fruit in list){
        builder.append(fruit).append("\n")
    }
    builder.append("Ate all fruits.\n")

    val res = builder.toString()
    println(res)

}

使用 with函数进行精简:

fun main(){
    
    val list = listOf("Apple","Banana","Orange","Pear","Grape")

    val res = with(StringBuilder()){
        append("Start eating fruits.\n")
        for(fruit in list){
            append(fruit).append("\n")
        }
        append("Ate all fruits.\n")
    }

    
	println(res)
}

2. run函数

用法和with函数基本一样,不同点在于,run函数通常不能直接调用,需要在某个对象的基础上调用;其次run函数只能接受一个Lambda参数。

fun main(){
    
    val list = listOf("Apple","Banana","Orange","Pear","Grape")

    val res = StringBuilder().run{
        append("Start eating fruits.\n")
        for(fruit in list){
            append(fruit).append("\n")
        }
        append("Ate all fruits.\n")
    }
    
	println(res)
}

3. apply函数

apply函数只能返回调用对象本身。其它用法与run函数一致。

fun main(){
    
    val list = listOf("Apple","Banana","Orange","Pear","Grape")

    val res = StringBuilder().apply{
        append("Start eating fruits.\n")
        for(fruit in list){
            append(fruit).append("\n")
        }
        append("Ate all fruits.\n")
    }
    
	println(res)
}

 

二、静态方法

静态方法就是那些不需要创建实例就能调用的方法。

在Kotlin中创建静态方法并不像Java中加个static关键字那样简单。在Kotlin中弱化了静态方法的使用,取而代之的是使用单例类来实现类似的功能。

使用单例类的形式创建Util工具类:

object Util{
    
    fun doAction(){
        println("Do Action.")
    }
}

fun main(){
    
    Util.doAction()
}

虽然Util不是静态方法,但是仍然可以使用 Util.doAction() 的方式来调用。

使用单例类的写法会将整个类中所有方法全部变成类似于静态方法的调用方式。如果只是想让类中的某一个方法变成类似于静态方法的调用方式则需要使用 companion object关键字来实现。

class Util{
    
    fun doAction1{
        
            println("Do Action 1.")
    }
    
    
    companion object{
        
        fun doAction2{
            
            println("Do Action 2.")
        }
    }
    
    
}

 

 如果我们在 单例类companion object 中的方法加上 @JvmStatic ,Kotlin编译器就会将该方法编译成真正的静态类。

 

注意:Kotlin编译器会将顶层方法全部被编译成静态方法。所谓顶层方法就是没有定义在任何类中的方法,比如 main方法

 

  • 作者:机器人不开心
  • 原文链接:https://blog.csdn.net/Hello_World_JS/article/details/117284967
    更新时间:2022-12-31 08:06:49