readLine()
返回读取的行,如果已到达文件末尾,则返回 null
,但它与 readlnOrNull()
的功能相同。那么这里有什么区别呢?
我知道 Kotlin 1.6 中引入了
readlnOrNull()
和 readln()
是为了空安全,但我不明白为什么在 readlnOrNull()
之前存在的情况下还要引入 readLine()
。
他们添加了
readlnOrNull
作为 readLine
的别名,以便保留每个抛出 RuntimeException 的标准库函数都有一个“orNull”版本,该版本返回 null 而不是抛出异常。添加readln
时添加的。这样就可以很容易地找到与此行为相匹配的函数。如果 readln
从 Kotlin 的最早版本就已经存在,那么他们可能永远不会创建与 readLine
的行为相匹配的冗余 readlnOrNull
函数。他们没有弃用 readLine
,因为它的行为没有任何问题,而且很简洁。
readLine() 和 readlnOrNull() 都是 Kotlin 中用于读取用户输入的方法。
readLine() 用于从标准输入读取一行文本并返回一个字符串。如果用户未提供任何输入或发生错误,此方法将抛出 IOException。
scss
val input = readLine()
readlnOrNull() 与 readLine() 类似,但如果用户未提供任何输入或发生错误,它不会抛出异常,而是返回 null。
scss
val input = readLine() ?: "No input provided"
一般情况下,建议使用 readlnOrNull(),因为它提供了一种更灵活、更安全的方式来处理 Kotlin 中的输入读取。