我正在努力学习无形。我创建了一个非常简单的案例类:
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)
我需要能够尽可能地定义一个方法,该方法采用任意符号并对列表进行分组。这可能吗?