我想从具有一个Char
和两个Int
元素的输入行中读取,如下所示:
A 1 4
到目前为止,我想过这样读:
val Array(mark, begin, end) = readLine.split(" ")
然后,我正在进行类型转换。然而,这非常难看。
是否有更好的方法从输入行读取不同类型的字符?
答案 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
如果要处理错误,匹配语句可能比分配更好。 (当然你可以抓住例外。)