gpt4 book ai didi

list - Scala 中是否有 - -(减号)运算符?

转载 作者:行者123 更新时间:2023-12-03 19:15:07 25 4
gpt4 key购买 nike

我在图形的 Scala 实现中遇到过这个运算符(您可以找到示例 here ,其中两个列表插入运算符 -- 和两个 Maps。

abstract class GraphBase[T, U] {
case class Edge(n1: Node, n2: Node, value: U) {
def toTuple = (n1.value, n2.value, value)
}
case class Node(value: T) {
var adj: List[Edge] = Nil
// neighbors are all nodes adjacent to this node.
def neighbors: List[Node] = adj.map(edgeTarget(_, this).get)
}

var nodes: Map[T, Node] = Map()
var edges: List[Edge] = Nil

// If the edge E connects N to another node, returns the other node,
// otherwise returns None.
def edgeTarget(e: Edge, n: Node): Option[Node]

override def equals(o: Any) = o match {
case g: GraphBase[_,_] => (nodes.keys.toList -- g.nodes.keys.toList == Nil &&
edges.map(_.toTuple) -- g.edges.map(_.toTuple) == Nil)
case _ => false
}
def addNode(value: T) = {
val n = new Node(value)
nodes = Map(value -> n) ++ nodes
n
}
}

我当前的解释器无法识别它,所以我想知道这个运算符来自哪里?这是否意味着列表减法?
它是有效的 Scala 代码吗?

最佳答案

您可以更改 equals 的实现避免使用 -- 的方法:

override def equals(o: Any) = o match {
case g: GraphBase[_,_] => (nodes.keySet == g.nodes.keySet &&
edges.map(_.toTuple).toSet == g.edges.map(_.toTuple).toSet)
case _ => false
}

关于list - Scala 中是否有 - -(减号)运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61061709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com