2012-04-30 21 views
1

对于一个非常基本的类别通用模型,我试图以逆变方式得到与一对对象相关的态射。斯卡拉的逆变二进制运算

class Obj[DerivedObj <: Obj[DerivedObj]] { /* ... */ } 

class Morphism[DerivedMorphism <: Morphism[DerivedMorphism]] { /* ... */ } 

我想以某种方式能够定义:

def mor(from : SomeConcreteObj, to : SomeConcreteObj) : SomeConcreteMorphism; 

,但制作的`明显的解决方案MOR obj的方法将需要的OBJ将被额外的态射型参数。

斯卡拉实现这样的事情的方式是什么?

+1

mor''应该返回多少可能的态射中的哪一个? –

回答

0

好的,我的部分不好的实体关系。大概暗含的是,mor实际上是一些Category类的方法:

trait Cat[O,M] { 
    def mor(from : O, to : O) : M; 

} 

这似乎解决了这个问题。