gpt4 book ai didi

Scala:集合中的连续ID

转载 作者:行者123 更新时间:2023-12-04 15:54:02 25 4
gpt4 key购买 nike

我有一个具有以下签名的 Edge 类(就像在图中一样)。

class Edge(b1: Block, b2: Block, var id: Int, arity: Int)

Block 是一个类 - 它的作用并不有趣。

现在,已经有一组 s,其中包含一些提供源和目标的对象。我现在想给这些边一个连续的 id(从 1 开始,下一个 block 将得到 2,依此类推......)。

我目前通过首先给所有 1 作为 id 然后运行函数 createLabels 来重新分配标签(见下文)。

val edges = s map { x => new Edge(x.getSrcBlock, x.getDstBlock, 1, getArity(x))}

def createLabels: Unit = {
var i: Int = 0
for(e <- edges) {
e.id = i
i = i+1
}
}

但是,我不喜欢这个解决方案,因为我想避免这些变量,而且它是过程风格而不是功能风格。你能告诉我如何才能做得更好吗?

最佳答案

你可以使用 zipWithIndex :

case class Edge(b1: Block, b2: Block, id: Int, arity: Int)

val edges = s.zipWithIndex.map { case (x, index) =>
Edge(x.getSrcBlock, x.getDstBlock, index, getArity(x))
}

关于Scala:集合中的连续ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32074580/

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