我有一个类Edge(如图中所示),具有以下签名.
class Edge(b1: Block, b2: Block, var id: Int, arity: Int)
Run Code Online (Sandbox Code Playgroud)
Block 是一个阶级 - 它做什么,没有意思.
现在,已经s有一些包含一些提供源和目标的对象.我现在想给这些边一个连续的id(从1开始,下一个块应该得到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
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我不喜欢这个解决方案,因为我想避免这些变量,它是程序风格而不是功能风格.你能给我一个提示,我怎样才能做得更好?