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()
        }
    }
}
相关推荐
兔兔兔兔11 分钟前
记录C++ 13
开发语言·c++·算法
码行山野赴时序归途7 分钟前
从暴力到最优:三道 C 语言入门题的解法思路
c语言·开发语言·数据结构·算法·leetcode·排序算法
数据知道16 分钟前
PHP 代码审计实战——ThinkPHP、Laravel 历史漏洞模式深度剖析
android·网络·web安全·网络安全·php·laravel
郑州光合科技余经理32 分钟前
本地生活平台搭建:统一订单表与多后台切换怎么拆
java·开发语言·前端·系统架构·uni-app·php·ai编程
拍客圈33 分钟前
换服务器 mozcjpeg 5.0.0
android
天下无敌笨笨熊38 分钟前
C#视频开发心得
开发语言·c#·音视频
淼澄研学1 小时前
基于Docker与iptables的AI智能体网络隔离实操指南
开发语言·python
莫陌尛.1 小时前
Java核心知识点:直接内存、CPU密集型线程池、并行流对比文档
java·开发语言
西峰u1 小时前
Java多线程初阶完整总结|线程、锁、volatile、等待通知、常见案例
java·开发语言·jvm
夜雨声烦丿2 小时前
从需求到页面:日期计算器应用的 ArkTS 原生实现
开发语言·javascript·华为·harmonyos