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函数)相关推荐

  1. Kotlin let、with、run、apply、also函数的使用

    let,with,run,apply,also 是内联扩展函数 下面是自己使用的心的如果有错的地方希望给予指正谢谢 这几个主要用来简化操作,使得代码可读性提高 ,下面列举项目中使用效果 1 let 先 ...

  2. Kotlin let with run apply also filter if常规用法笔记

    仅供个人学习参考 let mVideoPlayer?.let {it.setVideoView(activity.course_video_view)it.setControllerView(acti ...

  3. 轻松理解kotlin中标准函数let、run、with、apply、also的区别

    kotlin中,let.run.with.apply.also这几个标准函数使用起来非常方便,合理使用可以很大程度上的简化代码,但是这几个标准函数用法和功能相似,初学kotlin时,很容易会不知道该选 ...

  4. 《Kotlin for android developers》中文版翻译

    <Kotlin for android developers>中文版翻译 错别字.病句.翻译错误等问题可以提issues.请说明错误原因. 在线阅读或下载GitBook 在线阅读 希望大家 ...

  5. Kotlin in Android入门实践

    1.前言 虽然有了解kotlin,但是一直没在项目中使用,最近为了学习Jetpack+组件化,新开了个练习项目,顺便学一下kotlin,记录下学习路线. 2.学习路线 2.1.语言学习 主要学一下基本 ...

  6. 用Kotlin写Android Gradle脚本

    Android应用开发中,离不开Gradle脚本的构建.大部分Android开发同学忽视了脚本的力量,甚至有很大一部分同学不知道Gradle脚本是什么,用什么语言编写的:当然,也有相当一部分同学知道G ...

  7. Kotlin for Android

    在Google IO 2017 大会上,Google将 Kotlin列为 Android官方开发语言,Android Studio 3.0 也默认集成了Kotlin插件. Android Studio ...

  8. 用Kotlin开发android平台语音识别语义理解应用

    用Kotlin开发android平台语音识别,语义理解应用(olamisdk) 转载请注明CSDN博文地址:http://blog.csdn.net/ls0609/article/details/75 ...

  9. Kotlin on Android 开发环境介绍

    Kotlin 被 Google 采纳为 Android 开发一级编程语言,到现在也一年多了,我们团队从去年 10 月份开始部分项目尝试用 Kotlin 开发,到现在决定推广到全部项目,因为一旦用上 K ...

  10. 用Kotlin开发android平台语音识别,语义理解应用(olamisdk)

    本文使用Kotlin开发Android平台的一个语音识别方面的应用,用的是欧拉密开放平台olamisdk. 1.Kotlin简介 Kotlin是由JetBrains创建的基于JVM的编程语言,Inte ...

最新文章

  1. 10亿美元续命!OpenAI获微软投资,意在通用人工智能?
  2. 人人都能成为安全防范的高手 ——《黑客新型攻击防范:深入剖析犯罪软件》
  3. .NET 2.0 中使用Active Directory 应用程序模式 (ADAM)
  4. #舍得Share#Flash Media Server4.5迅雷高速下载地址by lwxshow
  5. GCD Counting
  6. OpenCV:使用OpenCV3随机森林进行统计特征多类分析
  7. Android Studio 使用教程(5)---打包apk
  8. matlab虚拟现实之工具介绍(修改)
  9. 传统存储方式_相机传到手机的3种方式,没WiFi的相机也能用
  10. 爸爸和儿子的故事带你理解java线程
  11. CodeForces - 1517B Morning Jogging
  12. 安全使用计算机习惯,如何安全使用计算机和互联网
  13. 从 Microsoft SQL Server 迁移到 Oracle
  14. uva 12086 树状数组
  15. jflash合并bin文件及hex文件
  16. 故障处理 软件 需求_如何做软件FMEA?
  17. matlab倒立摆pid仿真,一级倒立摆课程设计--倒立摆PID控制及其Matlab仿真
  18. c语言计算机二级涉及内容,计算机二级(C语言)都考哪些内容?
  19. win7/8/10,使用WSD不能打印
  20. 第九届全国大学生GIS应用技能大赛下午(试题及参考答案含数据)

热门文章

  1. 直接加QQ好友的链接或会话的方法
  2. win10强制删除文件夹(“你需要来自XXX的权限才能对此文件夹进行更改”的解决方法)
  3. Windows server 2012 R2 服务器强制删除文件夹
  4. 快速搭建视频直播平台
  5. 索尼计算机bios正确设置,索尼bios设置图解教程
  6. 1299最长上升子序列
  7. 苹果的产品开发流程介绍:带你认识世界最好的设计公司
  8. JAVA重写和重载的区别
  9. 2020考研数学一大纲之完全解析(四)
  10. Excel选择某单元格整行变色是这样做的