为什么此代码编译并在执行时给出运行时错误

Xolve

此Scala代码在Scala 2.13下编译

val res = new scala.collection.mutable.StringBuilder
"hello".foreach { c =>
  if (true) {
    (0 until 10).foreach( res += c )
  }
}

如果看到该foreach方法缺少匿名函数的参数。当它执行时,会给出一个令人费解的异常StringIndexOutOfBoundsExceptionres += c因为它StringBuilder应该始终是可附加的。

以下代码运行良好,没有例外。唯一的变化是_foreach参数功能添加了占位符

val res = new scala.collection.mutable.StringBuilder()
"hello".foreach { c =>
  if (true) {
    (0 until 10).foreach( _ => res += c )
  }
}
Sarveshseri

您问题的答案在于String.apply()StringBuilder.apply()更确切地说。

您看,foreach期望功能。用更准确的话来说就是一个计算为函数的表达式。

因此,它将首先对表达式求值以获得函数,然后将该函数应用于 0 until 10

因此,当您考虑external的第一次迭代时foreach,您拥有c = 'h'并遵循,

(0 until 10).foreach(res += c )

在这里,res += cres在追加后返回h

所以...评估的功能resres.apply使用res = "h"因此,以上实际上是

(0 until 10).foreach("h".apply)

因此,res.apply(0)进展顺利...却res.apply(1)失败了StringIndexOutOfBoundsException

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的代码给出运行时错误?

来自分类Dev

performSegueWithIdentifier给出运行时错误,为什么?

来自分类Dev

为什么以下条件运算符“?:”会编译却给出运行时错误

来自分类Dev

cout给出运行时错误

来自分类Dev

为什么此代码在 URI Online Judge 中给出“运行时错误”

来自分类Dev

为什么从未执行过的Swift 3代码会抛出运行时错误?

来自分类Dev

为什么从未执行过的Swift 3代码会抛出运行时错误?

来自分类Dev

为什么这会给出运行时浮点错误?

来自分类Dev

为什么这会给出运行时浮点错误?

来自分类Dev

为什么此代码给运行时分段错误?

来自分类Dev

va_arg给出运行时错误

来自分类Dev

flask sqlalchemy filter_by给出运行时错误

来自分类Dev

在android中给出运行时短信权限错误

来自分类Dev

在线判断给出运行时错误(NZEC)

来自分类Dev

为什么此代码使用UndecidableInstances进行编译,然后生成运行时无限循环?

来自分类Dev

Python代码抛出运行时错误NZEC?

来自分类Dev

为什么此异常不会导致运行时错误?

来自分类Dev

为什么在Codechef中提交此代码时出现运行时错误(SIGABRT)?

来自分类Dev

为什么在联机提交此代码时出现运行时错误?(jdk 1.7)

来自分类Dev

为什么以下golang程序会抛出运行时内存不足错误?

来自分类Dev

以下代码在 ideone 中给出运行时错误,但在 eclipse 和 bash 终端中运行良好

来自分类Dev

当我尝试从HashSet中删除不存在的元素时,为什么它没有给出运行时错误?

来自分类Dev

当我尝试从不存在的HashSet中删除元素时,为什么它没有给出运行时错误?

来自分类Dev

为什么 Python 中的执行时间在每次运行时给出不同的结果?

来自分类Dev

为什么我的代码出现运行时错误?

来自分类Dev

为什么通过Python的ctypes运行时,此C代码的执行速度比直接运行时快一半?

来自分类Dev

为什么会出现这种使用泛型不会抛出运行时或编译时的异常?

来自分类Dev

为什么ClassCastException是运行时错误?

来自分类Dev

设置iDoc = IE.Document在VBA中给出运行时错误

Related 相关文章

  1. 1

    为什么我的代码给出运行时错误?

  2. 2

    performSegueWithIdentifier给出运行时错误,为什么?

  3. 3

    为什么以下条件运算符“?:”会编译却给出运行时错误

  4. 4

    cout给出运行时错误

  5. 5

    为什么此代码在 URI Online Judge 中给出“运行时错误”

  6. 6

    为什么从未执行过的Swift 3代码会抛出运行时错误?

  7. 7

    为什么从未执行过的Swift 3代码会抛出运行时错误?

  8. 8

    为什么这会给出运行时浮点错误?

  9. 9

    为什么这会给出运行时浮点错误?

  10. 10

    为什么此代码给运行时分段错误?

  11. 11

    va_arg给出运行时错误

  12. 12

    flask sqlalchemy filter_by给出运行时错误

  13. 13

    在android中给出运行时短信权限错误

  14. 14

    在线判断给出运行时错误(NZEC)

  15. 15

    为什么此代码使用UndecidableInstances进行编译,然后生成运行时无限循环?

  16. 16

    Python代码抛出运行时错误NZEC?

  17. 17

    为什么此异常不会导致运行时错误?

  18. 18

    为什么在Codechef中提交此代码时出现运行时错误(SIGABRT)?

  19. 19

    为什么在联机提交此代码时出现运行时错误?(jdk 1.7)

  20. 20

    为什么以下golang程序会抛出运行时内存不足错误?

  21. 21

    以下代码在 ideone 中给出运行时错误,但在 eclipse 和 bash 终端中运行良好

  22. 22

    当我尝试从HashSet中删除不存在的元素时,为什么它没有给出运行时错误?

  23. 23

    当我尝试从不存在的HashSet中删除元素时,为什么它没有给出运行时错误?

  24. 24

    为什么 Python 中的执行时间在每次运行时给出不同的结果?

  25. 25

    为什么我的代码出现运行时错误?

  26. 26

    为什么通过Python的ctypes运行时,此C代码的执行速度比直接运行时快一半?

  27. 27

    为什么会出现这种使用泛型不会抛出运行时或编译时的异常?

  28. 28

    为什么ClassCastException是运行时错误?

  29. 29

    设置iDoc = IE.Document在VBA中给出运行时错误

热门标签

归档