首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在scala中建立quine类型

在scala中建立quine类型
EN

Stack Overflow用户
提问于 2016-06-24 16:24:43
回答 1查看 76关注 0票数 0

我必须用语法解析字符串。

代码语言:javascript
复制
lazy val expr: Parser[Term ~ Option[<recursion>]] = term ~ opt(expr)

你看,它使用自己来解析子表达式。但是这种类型会产生什么结果呢?为了重现这个问题,我已创建了一个有点类似的问题

代码语言:javascript
复制
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扩展。这使得列表能够以某种方式重新出现。但是,在我的情况下我该怎么办呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-24 16:38:36

我不确定您在这里试图做什么,因为您的result类型在函数定义和调用之间是不同的(第一个元素是前者中的Int,而在后者中是Boolean,这是不能工作的)。

但是,如果这只是一个错误,类似这样的东西应该能起作用:

代码语言:javascript
复制
 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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38018024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档