4

我正在阅读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]] ?

谢谢

4

1 回答 1

3

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

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

如果找不到整数,这个会抛出异常

于 2013-03-12T21:21:38.873 回答