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

这里不再一一介绍

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。