映射转换i.text.toInt vs toInt(i.text)

时间:2013-03-12 21:16:51

标签: 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]]?

由于

1 个答案:

答案 0 :(得分:3)

第一个是在StringLike

上定义的内置方法
def toInt: Int = java.lang.Integer.parseInt(toString)

如果找不到整数

,则会抛出异常