如何优雅地检测部分匹配?

时间:2011-02-20 05:24:57

标签: scala pattern-matching

我正在编写一个简单的HTTP服务器,我有这样的代码来解析请求字符串

val method :: url :: version :: rest = tokenize(requestString)
if (rest != Nil) 
  throw new IncorrectRequestException("Extra data after HTTP version")

tokenize()函数返回一个与变量列表匹配的字符串列表。这很好用。

但是,我想添加漂亮的错误报告。例如,如果缺少HTTP版本,我想抛出IncorrectRequestException(“缺少HTTP版本”)而不是简单的MatchError异常。

有没有什么好方法可以实现这一点,而不是检查tokenize()调用结果的长度?

1 个答案:

答案 0 :(得分:1)

Combinator Parsers可能是你在这里介绍的最强大的技术。您也可以尝试从列表中获取Iterator,然后进行连续next次调用以检索值。