gpt4 book ai didi

scala - 如何使 scala List of Any 具有强制属性?

转载 作者:行者123 更新时间:2023-12-02 00:31:42 24 4
gpt4 key购买 nike

一般来说,我是 scala 和 OOP 的新手,因此如果这个问题很愚蠢,我会提前道歉,但我真的不知道如何找到我要找的东西。

我有以下代码

case clase MyClass(id: Int, active: Boolean)
case class MyOtherClass(name: String, active: Boolean)


private def myMethod(active: Boolean, list: List[MyClass]): List[MyClass] = {
if(active){
list.filter(_.active == true)
}else{
list.filter(_.active == false)
}
}

现在,我要做的是让这个“myMethod”采用“Any”列表而不是特定类,只要它具有“active”属性即可。我该怎么办?

例如类:

 case class MyThridClass(name: String)

不会工作,因为它没有“事件”属性

最佳答案

您可以使用特征重构您的代码:

trait ActiveTrait {
val active: Boolean
}


case class MyClass(id: Int, override val active: Boolean) extends ActiveTrait
case class MyOtherClass(name: String, override val active: Boolean) extends ActiveTrait

private def myMethod(active: Boolean, list: List[ActiveTrait]): immutable.Seq[ActiveTrait] = {
if(active){
list.filter(_.active)
} else{
list.filterNot(_.active)
}
}

关于scala - 如何使 scala List of Any 具有强制属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51612351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com