文章目录
- 1. let
- 2. with
- 2.1 参数解析
- 2.2 用法示例
- 3、use函数
1. let
2. with
2.1 参数解析
第一个参数可以是一个任意类型的对象,
第二个参数是一个Lambda表达式
with函数会在Lambda表达式中提供第一个参数对象的上下文,
并使用Lambda表达式中的最后一行代码作为返回值返回
2.2 用法示例
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
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
fun saveBitmapToFile(bitmap: Bitmap, filePath: String) {try {FileOutputStream(filePath).use { out ->bitmap.compress(Bitmap.CompressFormat.PNG, 100, out)}} catch (e: Exception) {e.printStackTrace()}
}