同时读取不同类型的元素

时间:2016-02-04 20:38:04

标签: scala

我想从具有一个Char和两个Int元素的输入行中读取,如下所示:

A 1 4

到目前为止,我想过这样读:

val Array(mark, begin, end) = readLine.split(" ")

然后,我正在进行类型转换。然而,这非常难看。

是否有更好的方法从输入行读取不同类型的字符?

1 个答案:

答案 0 :(得分:2)

您可以使用正则表达式作为提取器和自定义提取器转换为int:

object int {
  def unapply(s: String) = try {
    Some(s.toInt)
  } catch {
    case e: NumberFormatException => None
  }
}

val pat = """([^ ]+) (\d+) (\d+)""".r
val pat(mark,int(begin),int(end)) = readLine

如果要处理错误,匹配语句可能比分配更好。 (当然你可以抓住例外。)