Scala 大小写类。使用上限值复制
我在使用具有上限值的case类的Scala 大小写类。使用上限值复制,scala,generics,Scala,Generics,我在使用具有上限值的case类的.copy方法时遇到问题。例如: sealed abstract class SomeOtherClass[A <: SomethingElse]{...} final case class SomeClass[LI <: SomeOtherClass[_]]( value1: String, value2: LI) 但当我尝试运行我的代码时,会出现一个错误,大意如下: type mismatch; [error] found
.copy
方法时遇到问题。例如:
sealed abstract class SomeOtherClass[A <: SomethingElse]{...}
final case class SomeClass[LI <: SomeOtherClass[_]](
value1: String,
value2: LI)
但当我尝试运行我的代码时,会出现一个错误,大意如下:
type mismatch;
[error] found : List[_$2]
[error] required: List[LI]
问题是,有没有一种方法可以将
.copy
方法用于类似的情况?或者,推荐的方法是什么?尝试像这样限定存在类型
val instance: SomeClass[_ <: SomeOtherClass[_]] = service.getInstance()
val实例:SomeClass[\p>尝试像这样限定存在类型
val instance: SomeClass[_ <: SomeOtherClass[_]] = service.getInstance()
val实例:SomeClass[;我无法复制这个…什么版本的Scala?@LeviRamsey 2.12.10我无法复制这个…什么版本的Scala?@LeviRamsey 2.12.10奇怪的是需要边界。它应该由case类SomeClass的定义暗示?奇怪的是需要边界。它应该由case类S的定义暗示但是你有课吗?
trait Animal
case class Cat() extends Animal
case class Dog() extends Animal
sealed abstract class House[A <: Animal](a: A)
case class DogHouse(dog: Dog) extends House(dog)
case class CatHouse(cat: Cat) extends House(cat)
final case class SomeClass[LI <: House[_]](value1: String, value2: LI)
val instance: SomeClass[_ <: House[_]] = SomeClass("Floppy", DogHouse(Dog()))
instance.copy(value1 = "Something new") // res0: SomeClass[_$2] = SomeClass(Something new,DogHouse(Dog()))