我有一个元组列表(我们称之为L1
),在这个元组_1
中是一些带有数据的类,并且是一个带有其他数据的其他类_2
的列表(我们称之为)。L2
对于L1
(即元组列表)的每个条目,我需要将每个条目L2
与相应的_1
. 我正在尝试构图,但卡住了。这是一个代码片段来演示我想要实现的目标:
case class LiveData(information: String)
case class StoredData(uniqueId: String)
case class MergedData(uniqueId: String, information: String)
def merge(live: LiveData, stored: StoredData): MergedData = MergedData(stored.uniqueId, live.information)
type Data = (LiveData, List[StoredData])
type UpdatedData = (LiveData, List[MergedData])
def process(dataEntries: List[Data]): List[UpdatedData] = {
val stored = GenLens[Data](_._2).each
val live = GenLens[Data](_._1)
val composed = ???
???
}
我想做的是这样的:
def process(dataEntries: List[Data]): List[UpdatedData] = {
val someLens = ???
someLens.each.modify(merge)(dataEntries)
}
我是否朝着正确的方向前进?我应该以某种方式尝试组合这两个镜头还是需要完全不同的东西?我也在我的项目中使用 Cats,但我对此很陌生,目前看不出它在这种情况下是否有用。