如何在 Scala 中引用自己的 class?

How to reference own class in scala?

class Node(var x: Int, var y: Int, var prev: Node)
{
    def getpath(): String = 
    {
        var tempnode = this(prev);
        while(tempnode.prev != null) 
        {
            tempnode = tempnode.prev;
        }
        return tempnode
    }
}

这是代码,但是不起作用,方法getpath()中我想引用当前节点class到一个变量中,然后向后遍历前面的节点,我怎么办完全在 Scala 中完成这个?

这是 Scala。我们不使用 var。我们不引用 null。我们不需要分号 ;,我们也不使用 return.

case class Node(x: Int, y: Int, prev: Option[Node]) {
  def getpath: String = 
    prev.fold(s"($x,$y)")(_.getpath + s" -> ($x,$y)")
}

@jwvh 点(都很好!)尽管如此,您编写的代码似乎正在寻找 root/head 而不是路径。

case class Node(x: Int, y: Int, prev: Option[Node]) {
    @tailrec
    def head: Node = prev match {
      case Some(node) => node.head
      case None => this
    }
}

或者如果你真的想要路径: (这类似于@jwvh 的回答,但是是尾递归,这意味着它在运行时被重写为循环,当你的路径长度很大时,这可能变得很重要) .

@tailrec
def path(acc: List[Node] = Nil): List[Node] = prev match {
    case Some(node) => node.path(this :: acc)
    case None => this :: acc
}