[Kotlin标准函数] run、with、apply、also、let、use等

文章目录

  • [1. let](#1. let)
  • [2. with](#2. with)
    • [2.1 参数解析](#2.1 参数解析)
    • [2.2 用法示例](#2.2 用法示例)
  • 3、use函数

1. let

2. with

2.1 参数解析

第一个参数可以是一个任意类型的对象,

第二个参数是一个Lambda表达式

with函数会在Lambda表达式中提供第一个参数对象的上下文,

并使用Lambda表达式中的最后一行代码作为返回值返回

2.2 用法示例

kotlin 复制代码
val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape")
val result = with(StringBuilder()) {
append("Start eating fruits.\n")
for (fruit in list) {
append(fruit).append("\n")
}
append("Ate all fruits.")
toString()
}
println(result)
// 输出
Strat eating fruits.
A
B
..
Ate all fruits

3、use函数

  • 实现了Closeable接口的对象可调用use函数
  • use函数会自动关闭调用者(无论中间是否出现异常)
  • 代码对比
    Java
java 复制代码
public void saveBitmapToFile(Bitmap bitmap, String filePath) {
    try {
        FileOutputStream out = new FileOutputStream(filePath);
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
        out.flush();
        out.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Kotlin

java 复制代码
fun saveBitmapToFile(bitmap: Bitmap, filePath: String) {
    try {
        FileOutputStream(filePath).use { out ->
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, out)
        }
    } catch (e: Exception) {
        e.printStackTrace()
    }
}
相关推荐
yujunlong39193 分钟前
flutter pigeon gomobile 插件中使用go工具类
flutter·golang·kotlin·swift
杨荧8 分钟前
【开源免费】基于Vue和SpringBoot的私人健身与教练预约管理系统(附论文)
java·前端·javascript·vue.js·spring boot·spring cloud·开源
zwf19307113 分钟前
(一)手把手地教, 带你一步步学会使用 LLM 搭建自己的小机器人
python·llm
yimengsama36 分钟前
npm | Yarn | pnpm Node.js包管理器比较与安装
前端·笔记·npm·node.js·pnpm·yarn
蒙娜丽宁40 分钟前
【人工智能】从零开始用Python实现逻辑回归模型:深入理解逻辑回归的原理与应用
人工智能·python·逻辑回归
ljz201644 分钟前
Vue练习案例(上)
前端·javascript·vue.js
wh柒八九1 小时前
使用win32com将ppt(x)文件转换为pdf文件
python·flask
007php0071 小时前
使用 Go 实现将任何网页转化为 PDF
开发语言·后端·python·docker·chatgpt·golang·pdf
hong1616882 小时前
CentOS中的Firewalld:全面介绍与实战应用
linux·python·centos
前端李易安2 小时前
HTTP常见的请求头有哪些?都有什么作用?在 Web 应用中使用这些请求头?
前端·网络协议·http