我试图将Java代码片段翻译成Scala。
它是一个无限的树形结构。
class Node {
public Node(Map<String, Node> routes) {}
}
class Factory {
public Map<String, Node> buildRoutes() {
Map<String, Node> routes = new HashMap<>();
asList("one", "two").forEach(key -> routes.put(key, new Node(routes));
return routes;
}
它正常工作。一旦我将上面的代码片段翻译成Scala,我就注意到Map存在问题。在Scala中,似乎股票可变和不可变映射不兼容。
因此,我必须在字段Node中使用可变映射类型。 对我来说,这看起来很奇怪,因为我的映射是不可变的。 它在节点中没有改变,而节点需要了解更多关于它的依赖关系。
import scala.collection.mutable
case class Node(routes: mutable.Map[String, Node])
object Factory {
def buildRoutes(): mutable.Map[String, Node] = {
val routes = new mutable.HashMap[String, Node]
List("one", "two").foreach(key => routes.put(key, Node(routes)))
routes
}
}
我希望看到一种替代方案,其中Node.routes是一个不可变的映射表。