Scala子字符串(i,outOfBoundsNum)有时在Fiddle中可以,但在生产代码中不行?

Scala子字符串(i,outOfBoundsNum)有时在Fiddle中可以,但在生产代码中不行?,scala,Scala,我注意到: val word = "My word" println(word.substring(0,1000)) 在Scala小提琴中效果很好: 但在生产环境中运行时,它会引发ArrayIndexOutOfBounds异常。为什么这在小提琴中是允许的,它是Scala版本控制吗?我正在Scala 2.12中测试我的生产代码。看起来像是JVM和JS的区别。请参阅的“未定义的行为”部分ArrayIndexOutOfBoundsException和StringIndexOutOfBoundsEx

我注意到:

val word = "My word"
println(word.substring(0,1000)) 
在Scala小提琴中效果很好:


但在生产环境中运行时,它会引发ArrayIndexOutOfBounds异常。为什么这在小提琴中是允许的,它是Scala版本控制吗?我正在Scala 2.12中测试我的生产代码。

看起来像是JVM和JS的区别。请参阅的“未定义的行为”部分
ArrayIndexOutOfBoundsException
StringIndexOutOfBoundsException
都列出了

我怀疑这是JVM和JS的区别。请参阅的“未定义的行为”部分
ArrayIndexOutOfBoundsException
StringIndexOutOfBoundsException
都列出了。确实如此-不要信任ScalaFIDLE。改用Scala工作表!或者使用REPL。REPL是撒旦的工具箱。