我必须用语法解析字符串。
lazy val expr: Parser[Term ~ Option[<recursion>]] = term ~ opt(expr)你看,它使用自己来解析子表达式。但是这种类型会产生什么结果呢?为了重现这个问题,我已创建了一个有点类似的问题
def quine(depth: Int, result: (Any, Option[Any])): (Any, Option[Any]) =
if (depth == 0) result else {quine(depth - 1, (depth, Some(result)))}
quine(5, (true, None))正如您所看到的,我使用Any,因为我不知道如何给出确切的类型。
这些列表以某种方式定义了proto类型List[A],由Cons[A](head: A, tail: List[A])和一些神奇的Nil扩展。这使得列表能够以某种方式重新出现。但是,在我的情况下我该怎么办呢?
发布于 2016-06-24 16:38:36
我不确定您在这里试图做什么,因为您的result类型在函数定义和调用之间是不同的(第一个元素是前者中的Int,而在后者中是Boolean,这是不能工作的)。
但是,如果这只是一个错误,类似这样的东西应该能起作用:
case class Quine(n: Int, q: Option[Quine])
def quine(depth: Int, result: Quine): Quine =
if (depth == 0) result else
quine(depth - 1, Quine(depth, Some(result)))
quine(5, Quine(6, None))https://stackoverflow.com/questions/38018024
复制相似问题