当前位置: 首页 > news >正文

Kotlin学习第三课

Kotlin常见标准库函数。

1.apply:你可以传入一个接受者,然后调用一系列函数来配置它以便使用。

没有使用apply

val menuFile = File("menu-file.txt")
menuFile.setReadable(true)
menuFile .setWritable(true)

使用apply

​
val menuFile = File("menu-file.txt").apply {setReadable(true)setWritable(true)
}​

2.let:let函数能使某个变量作用于lambda表达式里,让it关键字能引用它。

没有使用let

val fitstElement = listOf(1,2,3).first()
val firstItemSquared = fitstElement * fitstElement 

使用let函数

​
val firstItemSquared = listOf(1,2,3).first().let {it*it
}​

3.run:run和apply函数差不多,但与apply不同,run函数不返回接受者。

假设你想看某个文件是否包含某一个字符串:

val menuFile = File("menu-file.txt")
val serverDragonBreath = menuFile.run {readText().contains("Dragon's Breath")
}

run返回的是lambda结果,也就是true或者false。

4.with:with函数时run函数的变体,他们的功能都一样,但是调用的方式不一样,调用with时需要值参作为其第一个参数传入。

val nameTooLong = with ("Polarcubis,Supreme master of NyetHack") {length >= 20
}

可以看到参数的传入,然后也是返回true或者false。

5.also:also函数和let函数有些像,和let一样,also也是把接受者作为值参数传给lambda。但有一点不同、:also返回接受者对象,而let返回lambda结果。

6.takeIf:takeIf函数需要判断lambda中提供的条件表达式,给出true或者false,如果判断结果为true,从takeIf函数返回接受者对象,如果为false,则返回null。

当文件可读可写时,才读取文件内容。

不适用takeIf

val file = File("myfile.txt")
val fileContents = if(file.canRead() && file.canWrite()) {file.readText()
} else {null
}

使用takeIf

val fileContents = File("myfile.txt")
.takeIf { it.canRead() && it.canWrite() }
?.readText()

7.takeUnless,takeUnless和takeIf唯一的区别是,只有判断你给定的条件结果是false时,takeUnless才会返回原始接受者对象,建议使用takeIf而不是takeUnless。


http://www.mrgr.cn/news/60251.html

相关文章:

  • Java中顺序语句结构
  • 【React】React 18:新特性与重大更新解析
  • MPP音视频总结
  • Java设计模式之装饰器模式
  • PostgreSQL 约束
  • 维乐Senso Edge坐垫,自然并不远,向往就前往
  • Linux 重启命令全解析:深入理解与应用指南
  • 【代码优化Tip】关于结构
  • 设计模式——备忘录模式
  • gitlab如何重置密码
  • APP闪退原因
  • 【Spring MVC】请求参数的传递
  • 算力中心四大类型
  • 污水处理厂可视化系统:提升运营效率与环境监测能力
  • 电机---2电机的转速、扭矩、力矩之间的关系
  • CRC-DCO数据合规官:企业合规建设如何开展
  • 2024 Rust现代实用教程:变量与常见数据类型
  • QT linux 打包时库和插件如何生成
  • 行为识别SlowFast
  • 【MAE】掩码自回归编码器(论文复现)
  • Python小白学习教程从入门到入坑------第十七课 内置函数拆包(语法基础)
  • turtle海龟画图print
  • 轨迹规划 | 基于差速运动学的有模型PID算法(附ROS C++仿真)
  • 重磅!WebStorm 个人版免费开放:JetBrains 为个人开发者带来福音
  • 2024年北京海淀区中小学生信息学竞赛预选赛初复题目难度
  • Python忍者:如何悄无声息地获取Taobao商品详情?