使用无形镜片按任意场分组

时间:2014-10-19 22:49:48

标签: scala shapeless

我正在努力学习无形。我创建了一个非常简单的案例类:

case class Holding(ticker: String, assetClass: String, units: Double, mktValue: Double)

我希望能够对任意字段进行分组,即在控股列表上的股票代码或资产类别以及单位和mktValue的总和。

这有效:

val map = list.groupBy(lens[Holding] >> 'assetClass)

所以,这样做:

val mapped = Map( 'assetClass -> (lens[Holding] >> 'assetClass), 'ticker -> (lens[Holding] >> 'ticker))

def makeLens(sym: Symbol) = {
   mapped.get(sym).get
}

val map = list.groupBy(makeLens('assetClass).get)

创建一个用于固定镜片的地图似乎并没有遵循“废弃你的bolierplate”方法的精神。有没有办法做到这一点:

val sym = 'assetClass
val map = list.groupBy(lens[Holding] >> sym)

我需要能够尽可能地定义一个方法,该方法采用任意符号并对列表进行分组。这可能吗?

0 个答案:

没有答案