【发布时间】:2011-08-15 19:43:59
【问题描述】:
我对 Scala 完全陌生。现在,我正在尝试将我在标准 ML 中编写的解析器移植到 Scala,但遇到以下代码问题:
abstract class Token
case class Zero extends Token
case class At extends Token
//...
object Tokenizer {
def tokenize(seq : List[Char]) : List[Token] = seq match {
case List() => error("Empty input")
case '0' :: rest => Zero :: tokenize(rest)
case '@' :: rest => At :: tokenize(rest)
//...
}
}
在 SML 中,我不必声明 tokenize() 方法的返回类型,但似乎 Scala 需要它,并且它对我提供的类型不满意(它抱怨零,At 是无效类型,并且它们应该是 Token 类型)。请注意,我还想在解析阶段稍后的时间点对令牌列表进行模式匹配。
我在网上和 stackoverflow 上进行了一些搜索,以查看之前是否有人提出过类似的问题(看起来很简单),但不知何故我找不到任何东西。我很确定我有一些基本错误,请随时赐教:)
【问题讨论】:
标签: list scala type-inference case-class