将嵌套在元组中的列表的每个条目与元组的其他部分合并



我有一个元组的列表(让我们称之为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,但我对它很陌生,目前还不知道它在这种情况下是否有用。

此类型进行检查和编译。

def merge(dataEntries: List[Data]): List[UpdatedData] =
dataEntries.map{ 
case (ld, sds) =>
(ld, sds.map(sd => MergedData(sd.uniqueId, ld.information)))
}

如果这不是你想要的,那么也许你可以更具体一点。

最新更新