Kotlin for Android (let、with、run、apply、also函数)
lambda表达式
Kotlin回调函数的lambda简化,可以参见 Kotlin系列
内联扩展函数
let
let
扩展函数的实际上是一个作用域函数。
- 可以简化代码的写法。当然不用
let
也可以,使用let
会使代码更简洁。 - let函数另一个作用就是可以避免写一些判断null的操作。
//不使用let
mVideoPlayer?.setVideoView(activity.course_video_view)
mVideoPlayer?.setControllerView(activity.course_video_controller_view)
mVideoPlayer?.setCurtainView(activity.course_video_curtain_view)//使用let,变量在内部简化为it, 为空判断也只需要在外面判断一次就好
mVideoPlayer?.let {it.setVideoView(activity.course_video_view)it.setControllerView(activity.course_video_controller_view)it.setCurtainView(activity.course_video_curtain_view)
}
with
with
要传参A
,之后内部的代码,相当于在A
的内部,可直接访问A
的公有变量和方法。
//不使用with的代码块
override fun onBindViewHolder(holder: ViewHolder, position: Int) {ArticleSnippet item = getItem(position);if (item == null) {return}holder.tvNewsTitle.text = StringUtils.trimToEmpty(item.titleEn)holder.tvNewsSummary.text = StringUtils.trimToEmpty(item.summary))holder.tvExtraInfo.text = "难度:${item.gradeInfo} | 单词数:${item.length} | 读后感: ${item.numReviews}"
}//使用with的代码, 其中访问item的方法和变量,不用item.xxx 直接写 xxx 即可
override fun onBindViewHolder(holder: ViewHolder, position: Int){val item = getItem(position)?: returnwith(item){holder.tvNewsTitle.text = StringUtils.trimToEmpty(titleEn)holder.tvNewsSummary.text = StringUtils.trimToEmpty(summary)holder.tvExtraInf.text = "难度:$gradeInfo | 单词数:$length | 读后感: $numReviews"}
}
run
run
相当于let
with
的综合体,
- 相对于
let
,可以直接访问A
的公有方法和变量,不用加it.xxx
- 相对于
with
,不用传参,在外部做判空
//与上面对比,可以看出结合了let 和 with
override fun onBindViewHolder(holder: ViewHolder, position: Int){getItem(position)?.run{holder.tvNewsTitle.text = StringUtils.trimToEmpty(titleEn)holder.tvNewsSummary.text = StringUtils.trimToEmpty(summary)holder.tvExtraInf = "难度:$gradeInfo | 单词数:$length | 读后感: $numReviews" }
}
apply
用法跟run
一样,唯一不同的是返回值,run
返回最后一行的值,apply
返回的是对象本身。
also
用法跟let
一样,唯一不同的是返回值,let
返回最后一行的值,alse
返回的是对象本身。
参考资料
Kotlin系列之let、with、run、apply、also函数的使用
Kotlin for Android (let、with、run、apply、also函数)相关推荐
- Kotlin let、with、run、apply、also函数的使用
let,with,run,apply,also 是内联扩展函数 下面是自己使用的心的如果有错的地方希望给予指正谢谢 这几个主要用来简化操作,使得代码可读性提高 ,下面列举项目中使用效果 1 let 先 ...
- Kotlin let with run apply also filter if常规用法笔记
仅供个人学习参考 let mVideoPlayer?.let {it.setVideoView(activity.course_video_view)it.setControllerView(acti ...
- 轻松理解kotlin中标准函数let、run、with、apply、also的区别
kotlin中,let.run.with.apply.also这几个标准函数使用起来非常方便,合理使用可以很大程度上的简化代码,但是这几个标准函数用法和功能相似,初学kotlin时,很容易会不知道该选 ...
- 《Kotlin for android developers》中文版翻译
<Kotlin for android developers>中文版翻译 错别字.病句.翻译错误等问题可以提issues.请说明错误原因. 在线阅读或下载GitBook 在线阅读 希望大家 ...
- Kotlin in Android入门实践
1.前言 虽然有了解kotlin,但是一直没在项目中使用,最近为了学习Jetpack+组件化,新开了个练习项目,顺便学一下kotlin,记录下学习路线. 2.学习路线 2.1.语言学习 主要学一下基本 ...
- 用Kotlin写Android Gradle脚本
Android应用开发中,离不开Gradle脚本的构建.大部分Android开发同学忽视了脚本的力量,甚至有很大一部分同学不知道Gradle脚本是什么,用什么语言编写的:当然,也有相当一部分同学知道G ...
- Kotlin for Android
在Google IO 2017 大会上,Google将 Kotlin列为 Android官方开发语言,Android Studio 3.0 也默认集成了Kotlin插件. Android Studio ...
- 用Kotlin开发android平台语音识别语义理解应用
用Kotlin开发android平台语音识别,语义理解应用(olamisdk) 转载请注明CSDN博文地址:http://blog.csdn.net/ls0609/article/details/75 ...
- Kotlin on Android 开发环境介绍
Kotlin 被 Google 采纳为 Android 开发一级编程语言,到现在也一年多了,我们团队从去年 10 月份开始部分项目尝试用 Kotlin 开发,到现在决定推广到全部项目,因为一旦用上 K ...
- 用Kotlin开发android平台语音识别,语义理解应用(olamisdk)
本文使用Kotlin开发Android平台的一个语音识别方面的应用,用的是欧拉密开放平台olamisdk. 1.Kotlin简介 Kotlin是由JetBrains创建的基于JVM的编程语言,Inte ...
最新文章
- 10亿美元续命!OpenAI获微软投资,意在通用人工智能?
- 人人都能成为安全防范的高手 ——《黑客新型攻击防范:深入剖析犯罪软件》
- .NET 2.0 中使用Active Directory 应用程序模式 (ADAM)
- #舍得Share#Flash Media Server4.5迅雷高速下载地址by lwxshow
- GCD Counting
- OpenCV:使用OpenCV3随机森林进行统计特征多类分析
- Android Studio 使用教程(5)---打包apk
- matlab虚拟现实之工具介绍(修改)
- 传统存储方式_相机传到手机的3种方式,没WiFi的相机也能用
- 爸爸和儿子的故事带你理解java线程
- CodeForces - 1517B Morning Jogging
- 安全使用计算机习惯,如何安全使用计算机和互联网
- 从 Microsoft SQL Server 迁移到 Oracle
- uva 12086 树状数组
- jflash合并bin文件及hex文件
- 故障处理 软件 需求_如何做软件FMEA?
- matlab倒立摆pid仿真,一级倒立摆课程设计--倒立摆PID控制及其Matlab仿真
- c语言计算机二级涉及内容,计算机二级(C语言)都考哪些内容?
- win7/8/10,使用WSD不能打印
- 第九届全国大学生GIS应用技能大赛下午(试题及参考答案含数据)