scala - 映射转换 i.text.toInt 与 toInt(i.text)

标签 scala

我正在阅读 Beginning Scala 并尝试使用 REPL 中的示例。
我创建了一个 xml 和一个 toInt 函数,如下所示

val x = <x>{(1 to 3).map(i => <i>{i}</i>)}</x>

def toInt(in : String) : Option[Int] = {
    try { 
      Some(Integer.parseInt(in)) 
    }
    catch {
      case e : Exception => None
    } 
  }

我试过以下
(x \\ "i").map(i => i.text.toInt) // returns Seq[Int]

(x \\ "i").map(i => toInt(i.text)) // returns Sep[Option[Int]]

为什么第一个版本返回 Seq[Int] 而第二个版本返回 Seq[Option[Int]] ?

谢谢

最佳答案

第一个是内置方法,定义于 StringLike

def toInt: Int = java.lang.Integer.parseInt(toString)

如果没有找到整数,这个将抛出异常

关于scala - 映射转换 i.text.toInt 与 toInt(i.text),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15372297/

相关文章:

Scala:简单的网络服务

类型参数中的Scala类型级标识函数

generics - 避免在泛型方法中强制转换为Nothing

json - 在 Scala 中,如何为 Map[IndexedSeq[String], Int] 编写高效的 json 格式化程序?

scala - Scaldi 和 Guice 和有什么不一样

Scala:为什么 Int 类型列表也包含 String?

algorithm - Scala 与 Java 性能

scala - Unresolved 依赖 SBT org.scala-sbt#sbt_2.9.1;0.12.1 : not found, Play 示例

scala - 为什么 StreamingContext.socketTextStream 给出 "ERROR scheduler.ReceiverTracker: Deregistered receiver for stream 0"?

scala - 如何在scala中对两个或多个正则表达式使用模式匹配