Kotlin标准函数和静态方法

标准函数

with

第一个参数是一个类型或者对象,第二个参数是lambda表达式。其中第一个参数为第二个参数提供上下文,返回值是最后一行。案例代码:

Kotlin 复制代码
fun main() {
    val list = mutableListOf<String>()
    var ret = with(list) {
        add("1")
        remove("1")
        toString()
    }
    println(ret)
}

run

只有一个参数,是lambda表达式。返回值是最后一行,且它需要一个对象去调用:

Kotlin 复制代码
fun main() {
    var ret = mutableListOf<String>().run {
        add("1")
        add("2")
        remove("1")
        toString()
    }
    println(ret)
}

apply

和run类似,但是无法指定返回值。默认返回的是调用对象本身:

Kotlin 复制代码
fun main() {
    var ret = mutableListOf<String>().apply {
        add("1")
        add("2")
        remove("1")
    }
    println(ret.toString())
}

静态方法

单例类/companion object

Kotlin本身没有static关键字来支持静态函数,但是它本身有单例类的特性可以支持类似静态函数的功能。但是若想只把某个类的某个函数声明为静态函数的话,就需要加上companion object:

Kotlin 复制代码
class A{
    fun bb(){
        println("bb")
    }
    companion object{
        fun aa(){
            println("aa")
        }
    }
}
fun test(){
    A.aa()
}
fun main() {
    test()
}

注解(@JvmStatic)

Kotlin 复制代码
class A{
    fun bb(){
        println("bb")
    }
    companion object{
        @JvmStatic
        fun aa(){
            println("aa")
        }
    }
}
fun test(){
    A.aa()
}
fun main() {
    test()
}

注解只能用在单例类和companion object下。

相关推荐
lsswear5 小时前
Python 并发 线程
开发语言·python
郑州光合科技余经理5 小时前
国际版外卖系统:税率字段怎么和订单主流程解耦
android·java·开发语言·前端·后端·php·ai编程
软件课代表CiCi6 小时前
运行库是什么?电脑缺运行库怎么办?c++运行库缺失修复全攻略
开发语言·c++·windows·电脑·dll修复·dll丢失·运行库
Ivanqhz6 小时前
MLIR OpBuilder
开发语言·python·mlir
红宝村村长7 小时前
windows笔记本双系统ubuntu设置
开发语言
菜鸟~noob2338 小时前
【电子战】第15篇:混合定位——TDOA/FDOA/AOA 联合【含matlab代码】
开发语言·matlab
Dreams_l10 小时前
死信队列和延迟队列介绍
java·开发语言
andyweike10 小时前
Android Automotive
android
Zenova EdgeOS10 小时前
Python 工业边缘 redis-py 异步实战
开发语言·redis·python
又见情义10 小时前
记一次 RK3568 Android 13 蓝牙反复重启问题的排查与修复
android