Scala集合中的循环依赖项

Adr*_*ian 4 scala circular-dependency scala-collections

特质Traversable有方法,如toList,toMap,ToSeq.鉴于List,Map,Seq是的子类Traversable,这产生了一个循环依赖,这是通常不是一个理想的设计模式.

我知道这是受限于集合库,它提供了一些很好的转换方法.

有没有考虑过替代设计?比如"实用程序"类,还是添加转换方法Predef

说我想添加一个新类:class RandomList extends List {...}.toRandomList为所有Traversable类提供一个方法会很好,但为此我需要在Traversable上隐含"pimp my library"吗?这似乎有点矫枉过正.使用实用程序类设计,我可以扩展该类(或Predef)以添加我的转换方法.这里推荐的设计是什么?

ret*_*nym 7

另一种可扩展的方法是to[List],to[RandomList].

不过,添加这个内容有点棘手.https://gist.github.com/445874/2a4b0bb0bde29485fec1ad1a5bbf968df80f2905


Dan*_*ral 6

要添加一个toRandomClass你必须诉诸皮条客我的图书馆模式确实.但是,为什么你认为这有点矫枉过正?开销可以忽略不计.而且它不会工作延伸出的实用程序类-为什么会斯卡拉考虑该方法的新类?更不用说你必须实例化这样一个类才能访问它的方法.


And*_*rey 5

这里没有循环依赖.当存在少量相互引用的独立组件时,会发生循环依赖.Scala标准库是一个组件.由于它始终只需一步即可构建,因此没有任何问题.