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下。

相关推荐
海参崴-几秒前
C++ STL篇 红黑树的模拟实现
开发语言·c++
Dshuishui6 分钟前
我用 Claude Code 做了一个学术论文搜索工具
开发语言·人工智能·python·pip·uv
Resky08187 分钟前
ReentrantReadWriteLock 深度解析
java·开发语言·juc
赏金术士38 分钟前
Kotlin 从入门到进阶 之协程 Flow 模块(九)
开发语言·kotlin·php
赵钰老师39 分钟前
R语言在生态环境领域中的应用
开发语言·数据分析·r语言
guygg8843 分钟前
四旋翼无人机串级PID控制MATLAB仿真
开发语言·matlab·无人机
JohnnyDeng9444 分钟前
Kotlin 协程原理与 Android 中的最佳实践
android·kotlin·协程
guygg8844 分钟前
四足液压机器人设计程序MATLAB实现
开发语言·matlab·机器人
Frank_refuel1 小时前
C++之STL->string类的使用和实现
java·开发语言·c++
feifeigo1231 小时前
图像重建中软阈值方法的原理和MATLAB实现
开发语言·matlab