我正在尝试编写一个 scala 函数来检测目标站点 id (targetedSiteIds) 序列中是否存在站点 id (site_id)。
如果站点 id 存在于 Seq 中,则函数 filterSiteById 返回 true,否则返回 false。
但是,下面的代码一直给我错误
error: Targeting does not take type parameters
。
你能帮我解决这个问题吗?
提前致谢!
val site_id = "0011a522ce0f4bbbbaa6b3c38cafaa0f"
targeting = Targeting(targetedSiteIds=Seq("0009a522ce0f4bbbbaa6b3c38cafaa0f","0010a522ce0f4bbbbaa6b3c38cafaa0f","0011a522ce0f4bbbbaa6b3c38cafaa0f") // TargetedSiteIds)
case class Targeting(targetedSiteIds: Seq[String])
var trueOrFalse=filterSitesById(targeting) // true or false
def filterSitesById(sites: Targeting[Seq[String]]): Boolean = {
sites.fold(false)(_.exists(_.idx==site_id))
}
case class Targeting(targetedSiteIds: Seq[String])
val site_id = "0011a522ce0f4bbbbaa6b3c38cafaa0f"
val targeting = Targeting(targetedSiteIds = Seq("0009a522ce0f4bbbbaa6b3c38cafaa0f","0010a522ce0f4bbbbaa6b3c38cafaa0f","0011a522ce0f4bbbbaa6b3c38cafaa0f"))
def filterSitesById(sites: Targeting): Boolean = {
sites.targetedSiteIds.exists(_ == site_id)
}
filterSitesById(targeting)
def filterSitesById(sites: Targeting
或filterSitesById(sites: Seq[String]])
,确实没有Targeting[Seq[String]]
类型fold
,那么它只会将结果组合成相同的类型(Seq[String]
不能折叠成Boolean
),如果它是foldLeft
那么lambda应该组合 Boolean
结果与String
,如果使用exists
...则不需要任何手动折叠