限制图中节点的程度

时间:2015-05-19 16:47:54

标签: scala design-patterns graph degrees

我正在尝试使用Scala-Graph编写一个小应用程序。这是一个漂亮的包,但在为应用程序的实体建模时,我面临一个问题。

让我们说我们正在为组织中的员工建模。 Employee仅属于一个Department,但可以属于两个或更多个SocialClub。如果我们将Organisation视为图表,那么

var organisation = Graph[Employee,GroupsInOffice]()
// .....
val e1 = Employee (1, "Nirmalya")
val d1 = Department("Finance")
val d2 = Department("Sales"
val club1 = Club("Beer Drinkers")
val club2 = Club("Horse Riders")
// ....

因此,应允许以下内容:

organisation = organisation(e1 ~> club1,e1 ~> club2)

但是,以下应该

organisation = organisation(e1 ~> d1,e1 ~> d2)

我的问题是,为确保预防而采用的模式是什么。它应该是在图表本身(组织)上定义的约束,还是应该是应用程序级别检查,它计算在设置关系时使用e1的次数( ~)?在这种情况下,是否还有其他特殊方法?

1 个答案:

答案 0 :(得分:0)

经过一些(重新)搜索后,我发现library本身已经在图上定义了用户定义的(应用程序驱动的)约束。包

scalax.collection.constrained.constraints

提供了一些预定义和有用的约束。有趣的是,通过遵循一组特定的步骤并提供回调函数体,可以编写自己的约束。可以在此处获得更多信息:http://www.scala-graph.org/guides/constrained.html#Implementing。我还没有完成使用这种约束的工作,但希望我很快就会这样做。