String 字符串上的Scala-for循环
在scala REPL中,当我给出“H”.toInt时,我得到NumberFormatException。但是,相同的东西在for循环中工作- for(eString 字符串上的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_
“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循环,这是一个,因为没有产量:。