Android 基础补强 B04|把 Kotlin 高阶函数、泛型、委托和 DSL 连成一条线
摘要:《第一行代码》的 Kotlin 课堂分散在多个章节。本文用文章筛选规则这一小场景,解释函数参数、类型参数、行为委托和带接收者 Lambda 如何共同降低重复,并指出抽象过度和隐藏缓存的风险。
标签:Kotlin、高阶函数、泛型、委托、DSL
为什么要把分散的课堂放在一起读
阅读全书时,Android 功能章节不断推进,Kotlin 课堂则在穿插补充语言能力。容易出现每一节都认识,碰到 Compose 或 Gradle 脚本却仍觉得语法陌生的问题。本篇把这些知识围绕一个有限问题串联:怎样声明文章筛选规则,再由固定流程执行。
书籍回查位置已经按目录核对:6.5 是高阶函数入门,7.6 是高阶函数应用,8.5 是泛型和委托,10.6 是泛型的高级特性,13.7 是使用 DSL 构建专有语法结构。它们是不同层次的工具,不能因为都能减少代码就当成可以互相替换。
这也是基础补强与日课的区别:项目日课优先完成实际需求,本篇允许写一个小型语言练习,但不要求把它引入只有几处调用的真实工程。
高阶函数先解决变化的行为
假设文章有标题和作者,今天筛选有作者的内容,明天筛选标题包含 Android 的内容。重复写两套遍历流程没有必要,变化的是“是否接收这一项”的判断,可以把它作为函数参数传入。
dataclassRuleArticle(valtitle:String,valauthor:String?)fun<T>select(items:List<T>,accepts:(T)->Boolean):List<T>=items.filter(accepts)funselectKnownAuthors(items:List<RuleArticle>):List<RuleArticle>=select(items){!it.author.isNullOrBlank()}这是只依赖 Kotlin 标准库的独立片段,后续示例使用同一个模型,本次未编译。select 已经是高阶函数,因为它接收函数参数;调用者用 Lambda 提供具体规则。泛型 T 则让遍历不绑定 Article,编译器仍保留输入元素与判断参数之间的类型关系。高阶函数与 Lambda
实际工程可以直接使用标准库 filter,不必为了“用了高阶函数”再包装一个同义函数。这里显式写出 select,是为了看清哪一部分是流程,哪一部分是可替换行为。
泛型不等于把类型改成 Any
若把 List
做访问的公司网站用5个免费工具解决没人看难题
做访问的公司网站用5个免费工具解决没人看难题 网站上线三个月,后台访问数还是个位数,这种憋屈感谁懂?我见过太多老板花大几万做了个精美官网,结果连个访客影子都没有,钱白花不说,心里还堵得慌。别急,今天不聊那些虚头巴脑的理论,直接上干货,教你怎么用 免费工具 把“死站”盘活。…
凡科网站登录入口怎么选?3个细节避开黑产陷阱
凡科网站登录入口怎么选?3个细节避开黑产陷阱 你的网站是不是突然弹出了赌博广告,或者页面代码里莫名其妙多了几行JS?这时候别慌,90%的独立站长第一反应是“我被黑了”,但往往忽略了一个最基础的源头: 登录入口的安全设计…
SVG-edit 代码重构演进史:从巨型单体 JS 到模块化 SVG Canvas 架构
前端图形学 【免费下载链接】svgedit Powerful SVG-Editor for your browser 项目地址: https://gitcode.com/gh_mirrors/sv/svgedit 点击查看 免费下载 SVG-edit 曾经把整个编辑器塞进 svg-editor.js(界面)与 svgcanvas.js(其余…
新手建站避坑:一文搞懂织梦网站广告代码教程实操
新手建站避坑:一文搞懂织梦网站广告代码教程实操 域名服务器搞不懂,代码插进去报错,这是多少转行做网站新手的噩梦?别急,今天咱们不整虚的,直接上手, 一文搞懂 织梦(DedeCMS)里最让人头疼的广告代码植入。…
宁波高端网站建设避坑指南:3个设计细节让转化率翻倍
宁波高端网站建设避坑指南:3个设计细节让转化率翻倍 网站上线三个月,后台数据一片惨淡,流量个位数,询盘为零。这不仅是技术故障,更是设计逻辑的崩塌。很多老板以为“高端”就是堆砌动效、追求视觉华丽,结果做出一堆“花瓶”网站,用户进来看一眼就走了,根本不知道点哪里。 今天这份 宁波高端网站建设避坑指南…
网站的通栏怎么做性能优化
网站通栏怎么做兼顾安全与SEO的最佳实践 上周刚帮一个做B2B机械的客户排查故障,他的网站首页突然弹出了博彩广告,后台代码里赫然多了一段混淆过的JavaScript。客户急得打电话问我:“网站被黑挂马不知道怎么办?”这种时候,90%的人第一反应是重装系统或者删文件,但这往往是治标不治本。真正能救命且…