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)以添加我的转换方法.这里推荐的设计是什么?
另一种可扩展的方法是to[List],to[RandomList].
不过,添加这个内容有点棘手.https://gist.github.com/445874/2a4b0bb0bde29485fec1ad1a5bbf968df80f2905
要添加一个toRandomClass你必须诉诸皮条客我的图书馆模式确实.但是,为什么你认为这有点矫枉过正?开销可以忽略不计.而且它不会工作延伸出的实用程序类-为什么会斯卡拉考虑该方法的新类?更不用说你必须实例化这样一个类才能访问它的方法.