我是一名有用的助手,可以为您进行文本翻译。以下是需要翻译的内容:
这种方法并不高效,因为它取决于嵌套级别,可能是O(n^2)或O(n^3);
我正在尝试通过Monocle学习Lenses。到目前为止,我学到的是当你必须“修改”一个深度嵌套的
我在一个List
中有一个嵌套的case
类结构
为了简单起见,我们将使用以下示例 -
case class Address(street: String, city: String, state: String, zipCode: Int)
case class Person(firstName: String, lastName: String, addresses: List[Address])
case class Department(people: List[Person])
假设有一个 List[Department]
;现在如果我想通过过滤每个 Person
的 Address
来创建一个新的 List[Department]
,这些人没有特定的 zipCode
值;传统上我们可以按照以下方式操作:
def filterPersonsByAddress(dlist: List[Department]): List[Department] = {
dlist.map { d =>
val people = d.people.map { p =>
p.copy(addresses = p.addresses.filterNot(_.zipCode == 38978))}
d.copy(people=people)
}
}
这种方法并不高效,因为它取决于嵌套级别,可能是O(n^2)或O(n^3);
我正在尝试通过Monocle学习Lenses。到目前为止,我学到的是当你必须“修改”一个深度嵌套的
case
类结构时,Lenses非常有用,但还没有找到一种基于条件“chop off”某个嵌套结构部分并返回一个新结构的方法。在Monocle中是否可能实现这一点?此外,我不确定Lenses是否能够帮助实现更好的Big O时间复杂度?