'Error with type bounds in function definition
I have some class hierarchy:
trait Params
trait ParamsWithName extends Params {
val name: String
}
case class ParamsWithNameAndValue(name: String, value: String) extends ParamsWithName
I want to implement a few classes that will use these. The following works:
trait Worker[T <: ParamsWithName] {
def work(parameters: T): String = parameters.name
}
class SimpleWorker extends Worker[ParamsWithNameAndValue] {
override def work(parameters: ParamsWithNameAndValue): String = s"${parameters.name} + ${parameters.value}"
}
The following does not:
trait Worker {
def work[T <: ParamsWithName](parameters: T): String = parameters.name
}
class SimpleWorker extends Worker {
override def work[ParamsWithNameAndValue](parameters: ParamsWithNameAndValue): String = s"${parameters.name} + ${parameters.value}"
}
The error is:
error: value name is not a member of type parameter ParamsWithNameAndValue
override def work[ParamsWithNameAndValue](parameters: ParamsWithNameAndValue): String = s"${parameters.name} + ${parameters.value}"
error: value value is not a member of type parameter ParamsWithNameAndValue
override def work[ParamsWithNameAndValue](parameters: ParamsWithNameAndValue): String = s"${parameters.name} + ${parameters.value}"
I would like to understand why this is the case.
Scala version is 2.12.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
