Scala:解决 "illegal cyclic reference"

标签 scala tree types

我正在尝试实现一个基于 HashMap 的树,该树支持给定根键的 O(1) 子树查找。为了这个目标,我正在努力做到以下几点:

scala> type Q = HashMap[Char, Q]
<console>:6: error: illegal cyclic reference involving type Q
       type Q = HashMap[Char, Q]
                          ^

所以问题是,有没有办法让我在不诉诸丑陋的情况下做类似的事情 HashMap[Char, Any]随后将值转换为 HashMap[Char, Any] ?

现在,我也看到我可以使用类似下面的东西来避免循环引用错误,它甚至可能更干净——但最好找出如何以第一种方式正确地做到这一点,只是为了教育值(value)。
import collections.mutable.HashMap

class LTree {
  val children = new HashMap[Char, LTree]
}

谢谢一堆。

最佳答案

我可能没有“明白”这个问题,但是呢

class L {
  type Q = java.util.HashMap[Char, this.type]
}

或者
class Q extends java.util.HashMap[Char, Q]

关于Scala:解决 "illegal cyclic reference",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2732454/

相关文章:

C++ 递归打印二叉树的问题

c++ - 数据结构中的 MST 和唯一性问题已解决 Ex?

parsing - haskell : Recursive datatype - parse [String] to n-ary tree

swift - 类型方法和类型实例方法等之间的区别?

c# - Nullable.GetUnderlyingType 无法正常工作

scala - 镜头和部分镜头有什么区别?

json - 哪个 JSON 序列化库适合以下情况?

haskell - 在 Haskell 中模拟路径依赖类型

html - 应用程序设计 : Scala + HTML5

scala - Scala 类定义中 protected 关键字的含义是什么?