Kotlin 中的 readLine() 和 readlnOrNull() 有什么区别?

问题描述 投票:0回答:2

如 Kotlin API 文档中所述,

readLine()
返回读取的行,如果已到达文件末尾,则返回
null
,但它与
readlnOrNull()
的功能相同。那么这里有什么区别呢?

我知道 Kotlin 1.6 中引入了

readlnOrNull()
readln()
是为了空安全,但我不明白为什么在
readlnOrNull()
之前存在的情况下还要引入
readLine()

kotlin input kotlin-null-safety
2个回答
4
投票

他们添加了

readlnOrNull
作为
readLine
的别名,以便保留每个抛出 RuntimeException 的标准库函数都有一个“orNull”版本,该版本返回 null 而不是抛出异常。添加
readln
时添加的。这样就可以很容易地找到与此行为相匹配的函数。如果
readln
从 Kotlin 的最早版本就已经存在,那么他们可能永远不会创建与
readLine
的行为相匹配的冗余
readlnOrNull
函数。他们没有弃用
readLine
,因为它的行为没有任何问题,而且很简洁。


0
投票

readLine() 和 readlnOrNull() 都是 Kotlin 中用于读取用户输入的方法。

readLine() 用于从标准输入读取一行文本并返回一个字符串。如果用户未提供任何输入或发生错误,此方法将抛出 IOException。

scss

val input = readLine()

readlnOrNull() 与 readLine() 类似,但如果用户未提供任何输入或发生错误,它不会抛出异常,而是返回 null。

scss

val input = readLine() ?: "No input provided"

一般情况下,建议使用 readlnOrNull(),因为它提供了一种更灵活、更安全的方式来处理 Kotlin 中的输入读取。

© www.soinside.com 2019 - 2024. All rights reserved.