kotlin中体会到一些比较好用的点

1.List的lambda中直接访问变量

复制代码
fun testList() {
    val list = listOf(11, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    var count = 0

    //在lambda中可以直接操作变量
    list.forEach {
        count++
    }

    println("count:$count")

    //遍历索引
    list.indices.forEach {
        println("$it")
    }
}

2.使用Object来管理单例Service的注册

初始化

复制代码
fun testService() {
    ServiceListManager.init()
}

IService

复制代码
interface IService {
    fun init()

    val order: Int
        get() = 1
}

具体的Service

复制代码
package service

object AccountService : IService {
    override fun init() {
        println("AccountService init")
    }

    override val order: Int
        get() {
            return 3
        }
}

ServiceListManager

复制代码
package service

object ServiceListManager {
    private val serviceList = mutableListOf<IService>(
        LoginService,
        AccountService
    )

    fun init() {
        //先排序一下
        serviceList.sortBy { it.order }

        //初始化
        serviceList.forEach {
            it.init()
        }
    }
}
相关推荐
码哥DFS16 小时前
二叉树的直径
开发语言·javascript·算法
paopaokaka_luck16 小时前
基于springboot3+vue3的企业考勤管理系统(部门树递归、Echarts图形化分析)
开发语言·spring boot·学习·echarts·mybatis·需求分析·代码规范
梦雨生生18 小时前
java开发工具(学习第一天)
java·开发语言·学习
啊啊啊啊啊!!!!19 小时前
【c++】stack和queue的接口使用以及底层实现
开发语言·c++
刘名喜19 小时前
第24篇-全局异常处理
kotlin·springboot
松仔log20 小时前
Java中级——组合和继承
android·java·开发语言
(Charon)1 天前
【C++】锁与原子操作(四):自旋锁的完整实现与性能优化
c语言·开发语言·c++
雨田言炎1 天前
五、Qt控件使用说明大全
开发语言·qt
bu_shuo1 天前
MATLAB中的meshgrid和ndgrid
开发语言·matlab
我命由我123451 天前
Jetpack Compose - MaterialExpressiveTheme 与 MaterialTheme、ColorScheme
android·java·开发语言·java-ee·kotlin·android jetpack·android runtime