6.常见高阶函数5

with操作符 也是将作用域转移到对象内部,对象不能为空

val bufferedReader = BufferedReader(FileReader("hello.txt"))
with(bufferedReader){
    var line: String?
    while (true){
        //readLine是bufferedReader 的方法
        line = readLine()?: break
        println(line)
    }
    close()
}

use操作符 针对流操作,自带流关闭方法

BufferedReader(FileReader("hello.txt")).use {
    var line: String?
    while (true){
        line = it.readLine()?: break
        println(line)
    }
}

其实kotlin里面封装了好多file的扩展方法
上面可以简化一句代码

File("hello.txt").readLines().forEach(::println)
image

这里不再一一介绍

你可能感兴趣的:(6.常见高阶函数5)