资讯详情

资讯详情

KMP学习day1--Kotlin集合高阶函数与参数技巧

KMP学习day1–Kotlin集合高阶函数与参数技巧Kotlin 是 KMPKotlin Multiplatform的地基语言写好 KMP 共享逻辑的第一步是把 Kotlin 区别于 Java 的日常语法吃透。本文聚焦两个最高频的主题集合的高阶函数map/filter和函数的默认参数与命名参数。它们不炫技却决定了 Kotlin 代码读起来的味道——简洁、不可变、表达力强。集合操作map 与 filter各自的职责filter按条件筛选元素返回只含满足条件元素的新集合。map对每个元素做映射变换返回新集合元素个数不变类型可以变。关键约定两者都不修改原集合每次返回新集合——这是函数式风格的「不可变思想」数据流转清晰可追溯。基础示例从分数表筛出及格分并整体加 5 分 bonus 场景valscoreslistOf(78,55,92,45)valresultscores.filter{it60}.map{it5}println(result)// [83, 97]scores 原样不变链式调用从左到右读先筛后变一目了然。对从 ArkTS/TypeScript 转过来的开发者几乎没有学习成本——arr.filter(...).map(...)用法一致。两个加分细节先 filter 后 map先筛掉不满足条件的元素map阶段的计算量随之减少。顺序反过来功能等价但会浪费变换运算。大数据量用asSequence()惰性求值普通链式调用每一步都会创建一个中间集合asSequence()让元素逐个走完整条处理链再处理下一个避免中间集合的内存开销valresultscores.asSequence().filter{it60}.map{it5}.toList()复杂度上filter与map各遍历一次整体 O(n) O(n) O(n)。真实场景列表页搜索过滤filter 数据模型转 UI 模型map是跨端项目里出现频率最高的组合之一KMP 中共享层的业务数据也常用这对函数加工后再交给各端 UI。函数默认参数与命名参数默认参数函数定义时给参数指定默认值调用时不传就取默认值——Java 里成堆的「参数组合重载」从此消失fungreet(name:String,greeting:String你好,punct:String!){println($greeting,$name$punct)}greet(小明)// 你好, 小明!命名参数调用时用参数名 值的形式传参作用有二可以不按声明顺序传参可以跳过有默认值的中间参数。greet(小明,punct?)// 只改标点跳过中间的 greetinggreet(punct!!,name小明)// 顺序随便换解决了什么痛点Java想「只传第 3 个参数」必须为每个参数组合写一整套重载方法。ArkTS/TypeScript要么把前面的参数用undefined占位要么把参数包成 options 对象如router.pushUrl({ url: ... })。Kotlin命名参数不包对象也能达到 options 对象的效果还保留了编译期类型检查。真实场景KMP 网络层封装里非常典型HttpClient(timeout 30, retries 3)调用方只写自己关心的参数其余交给默认值——API 既灵活又自文档化。小结这两个特性合起来体现了 Kotlin 的设计取向用声明式的集合链替代手写循环用默认/命名参数替代重载与参数对象。它们是后续学习协程、Flow、KMP 共享模块 API 设计的 everyday 基本功——先让日常代码变简洁架构层面的优雅才有着力点。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →