2015-05-19 4 views
1

Я пытаюсь написать небольшое приложение, используя 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 используется при настройке отношения (~)? Есть ли какой-либо другой особый подход, который вы принимаете в такой ситуации?

ответ

0

После недолгого (ре) поиска, я обнаружил, что сам library сделал положения для определения определяемых пользователем (применение управляемых) ТРУДНОСТИ на графике. Пакет

scalax.collection.constrained.constraints 

содержит некоторые предопределенные и полезные ограничения. Интересно, что можно писать собственные ограничения, следуя определенному набору шагов и предоставляя тела функций обратного вызова. Более подробную информацию можно получить здесь: http://www.scala-graph.org/guides/constrained.html#Implementing. Я еще не закончу свою работу, которая использует такое ограничение, но, надеюсь, скоро.