String 字符串上的Scala-for循环

String 字符串上的Scala-for循环,string,scala,for-loop,String,Scala,For Loop,在scala REPL中,当我给出“H”.toInt时,我得到NumberFormatException。但是,相同的东西在for循环中工作- for(e“H”是一个字符串,而e是一个字符,后者是整数值(Unicode码点值)映射到字符;对Char值调用.toInt只返回该代码点值。String是一系列Char值,而for循环依次迭代构成字符串的每个字符“Hello”,一次处理一个字符: scala 欢迎使用Scala 2.12.5(Java热点(TM)64位服务器虚拟机,Java 1.8.0_

在scala REPL中,当我给出“H”.toInt时,我得到NumberFormatException。但是,相同的东西在for循环中工作- for(e
“H”
是一个
字符串
,而
e
是一个
字符
,后者是整数值(Unicode码点值)映射到字符;对
Char
值调用
.toInt
只返回该代码点值。
String
是一系列
Char
值,而
for
循环依次迭代构成字符串的每个字符
“Hello”
,一次处理一个字符:

scala 欢迎使用Scala 2.12.5(Java热点(TM)64位服务器虚拟机,Java 1.8.0_161)。 键入要计算的表达式。或尝试:help。 scala>“H”.toInt java.lang.NumberFormatException:用于输入字符串:“H” 位于java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 在java.lang.Integer.parseInt(Integer.java:580)处 在java.lang.Integer.parseInt(Integer.java:615) 位于scala.collection.immutable.StringLike.toInt(StringLike.scala:301) 位于scala.collection.immutable.StringLike.toInt$(StringLike.scala:301) 位于scala.collection.immutable.StringOps.toInt(StringOps.scala:29) …28删去 scala>for(e'H'.toInt) res2:Int=72 当对
字符串
使用
toInt
时,如果其值编码为整数值,则它将工作。例如:

scala>“72”.toInt
res3:Int=72
如果它没有对整数值进行编码,则会得到
NumberFormatException

scala>“Fred”.toInt
java.lang.NumberFormatException:对于输入字符串:“Fred”
位于java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
在java.lang.Integer.parseInt(Integer.java:580)处
在java.lang.Integer.parseInt(Integer.java:615)
位于scala.collection.immutable.StringLike.toInt(StringLike.scala:301)
位于scala.collection.immutable.StringLike.toInt$(StringLike.scala:301)
位于scala.collection.immutable.StringOps.toInt(StringOps.scala:29)
…28删去

Scala可以将字符转换为Int,如您在此处所见:

scala> 'H'.toInt
res0: Int = 72
但是没有从字符串到Int的隐式转换

scala> "H".toInt
java.lang.NumberFormatException: For input string: "H"

在for循环中,您将
Char
分配给
e

“H”
是一个
字符串
'H'
是一个
Char
所以
'H'。toInt
可以很好地工作。作为一个次要的技术性,Scala确实有for循环,这是一个,因为没有
产量
:。