Bastard_Ape Asked:2022-08-24 18:38:04 +0000 UTC2022-08-24 18:38:04 +0000 UTC 2022-08-24 18:38:04 +0000 UTC Kotlin 中的 readLine() 和 readln() 有什么区别? 772 尝试编写控制台计算器并遇到以下问题。 如果通过 为变量赋值readLine(),则以后无法使用该函数对其进行转换toInt()。如果你使用函数readln(),那么编译器在转换过程中不会发誓。 有什么区别? kotlin 2 个回答 Voted Best Answer Vadik 2022-08-24T19:46:44Z2022-08-24T19:46:44Z 您可以转到该方法的实现,readln()一切都会立即变得清晰: public actual fun readln(): String = readLine() ?: throw ReadAfterEOFException("EOF has already been reached") 唯一的区别readln()是readLine(),第一种方法会在到达文件末尾时抛出异常,而第二种方法将静默返回null。 如果它适合你的任务readLine(),那么最好改用一个更会说话的等价物readlnOrNull()。在未来的版本中将readLine()被标记为已弃用。 由于您在程序中从控制台输入数据,因此可以通过按+ (或Windows 上的 +)模拟文件结尾EOF 。查看您的程序的行为方式:CtrlDCtrlZ 如果你使用readln(),你会得到一个错误EOF has already been reached,如果你不处理这个异常,程序将终止。 如果您使用readLine()or readlnOrNull(),那么您自己可以检查结果null并决定在这种情况下要做什么。因错误或其他原因终止程序: val number = readLine()?.toInt() if (number == null) { // достигли конца файла } Крест Доминика Туретта 2022-08-24T19:12:57Z2022-08-24T19:12:57Z https://kotlinlang.org/docs/whatsnew16.html#new-readline-functions 简而言之,readln() 返回非空字符串类型,并抛出RuntimeException. 反过来,readline() 返回 String?,它可以为 null。后者的更新替代方法是在 1.6.0 中添加的 readlnOrNull()。
您可以转到该方法的实现,
readln()一切都会立即变得清晰:唯一的区别
readln()是readLine(),第一种方法会在到达文件末尾时抛出异常,而第二种方法将静默返回null。如果它适合你的任务
readLine(),那么最好改用一个更会说话的等价物readlnOrNull()。在未来的版本中将readLine()被标记为已弃用。由于您在程序中从控制台输入数据,因此可以通过按+ (或Windows 上的 +)模拟文件结尾EOF 。查看您的程序的行为方式:CtrlDCtrlZ
如果你使用
readln(),你会得到一个错误EOF has already been reached,如果你不处理这个异常,程序将终止。如果您使用
readLine()orreadlnOrNull(),那么您自己可以检查结果null并决定在这种情况下要做什么。因错误或其他原因终止程序:https://kotlinlang.org/docs/whatsnew16.html#new-readline-functions 简而言之,readln() 返回非空字符串类型,并抛出
RuntimeException. 反过来,readline() 返回 String?,它可以为 null。后者的更新替代方法是在 1.6.0 中添加的 readlnOrNull()。