我有一个班级 Option
值,我需要应用 Some
在类中创建一个对象列表。
例子:
class Thing(name: String, age: Int)
class Filter(name: Option[String], age: Option[Int], size: Option[Int])
val list: List[Thing] = functionThatReturnsAListOfThings(param)
val filter: Filter = functionThatReturnsAFilter(otherParam)
list.filter{ thing =>
if filter.name.isDefined {
thing.name.equals(filter.name.get)
}
if filter.age.isDefined {
thing.age == filter.age.get
}
}.take{
if filter.size.isDefined filter.size.get
else list.size
}
如何使用fp将筛选器正确应用于列表?
1条答案
按热度按时间t0ybt7op1#
首先,我们需要做一个小的更改,以便构造函数参数是公共成员。
接下来,从您的示例代码来看,不清楚什么时候应该发生
filter.name
以及filter.age
两者都是None
. 我假设None
手段true
,即未过滤掉。请注意
take(Int.MaxValue)
效率比take(list.size)
.