[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()
    }
}
相关推荐
Avan_菜菜7 小时前
AI 能写代码了,为什么我反而开始要求它先写文档?
前端·github·ai编程
爱勇宝11 小时前
鸿蒙生态的下半场:开发者不只要能开发,还要能赚钱
android·前端·程序员
hboot11 小时前
AI工程师第二课 - 数据处理
人工智能·python·数据分析
IT_陈寒14 小时前
SpringBoot这个自动配置坑我跳了三次
前端·人工智能·后端
kyriewen14 小时前
我用 AI 一周写完了整个项目,上线第一天就崩了——这是我踩过最贵的 5 个坑
前端·javascript·ai编程
牧艺15 小时前
从零到协同:构建类飞书在线文档系统的五个技术重难点
前端·人工智能
红尘散仙15 小时前
想写一个像样的终端 App?试试把 React 的开发体验搬进 Rust TUI
前端·rust
用户83562907805116 小时前
使用 Python 自动化 PowerPoint 形状布局与格式设置
后端·python
袋鼠云数栈UED团队16 小时前
一套 Spec-First 的 AI 编程工作流
前端·人工智能
袋鼠云数栈前端16 小时前
一套 Spec-First 的 AI 编程工作流
前端·ai+