在我的应用程序中的几个不同的地方,我需要一个Seq[SalesRow]
并返回一个Map[String,SalesRow]
,其中字符串是一个国家的名称。如何处理特定种类的收集操作?
我需要在几个地方使用这个。例如,我列出了所有SalesRows的列表,并按国家/地区对全球销售额进行了细分。但在其他地方,我想按月和按国家来分销我的销售额(因此Map[Month,Seq[SalesRow]]
变为Map[Month,Map[String,Seq[SalesRow]]]
) - 在其他地方,我想按日期分列,然后按国家分列。
我的问题是:我在哪里把(小)的逻辑数量为Seq[SalesRow]
,并返回一个国家的地图行?现在,我将它放在伴侣对象方法SalesRow.byCountry(rows : Seq[SalesReport]
中。这是最佳吗?
我想到了一个稍微疯狂的想法,即创建一个从Seq[SalesRow]
到EnhancedSalesRowSeq
的隐式转换,它有一个byCountry
实例方法。这吸引我,因为该操作适用于任何SalesRows序列。
这是个好主意吗?
是向伴侣对象添加逻辑我最好的选择,还是有更好的选择?
谢谢。
对,这就是我在倒数第二段提出的建议。我的问题是:这是一件非常奇怪或意想不到的事情吗? – Bill 2011-05-01 01:20:27
这或多或少等同于'groupBy',它是一个库定义的方法。 – huynhjl 2011-05-01 02:06:13
从@huynhjl的评论中可以推断出这并不出人意料,这是对我重新推演图书馆方法的疏忽。 – 2011-05-01 08:19:47