X类采用类型参数

Kev*_*ith 6 scala parser-generator

通过这篇关于Parser Combinators的信息性很好的文章阅读,我看到了这段代码:

class DisParser[+A](left: Parser[A], right: Parser[A]) extends Parser[A] {
  def apply(s: Stream[Character]) = left(s) match {
    case res: Success => res
    case _: Failure => right(s)
  }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译此代码时,我得到:

Parser.scala:19: error: class Success takes type parameters
    case res: Success => res
              ^
one error found
Run Code Online (Sandbox Code Playgroud)

鉴于签名Parser:

case class Success[+A](value: A, rem: Stream[Character]) extends Result[A]
Run Code Online (Sandbox Code Playgroud)

如何更改case res: Success => res线条以提供Success正确的类型参数?

whe*_*ies 6

Success你在用哪个?这个(来自Parsers包的成功)还是这个(来自util的成功)?两者都采用类型参数,所以你需要把它作为

res @ Success(_, _) =>
Run Code Online (Sandbox Code Playgroud)

否则你将不得不处理删除警告.