I have a simple trait as defined below:
trait MyTrait {
def myStringVal: String
}
My case class which implements this trait is as below:
Scala case classes have a plenty of boilerplate implemented for you, and having all the constructor parameters automatically exposed as val
s is one of these things.
If you try avoiding val
s in a regular class, like that:
trait MyTrait {
def myVal: String
}
class MyClass(myVal: String) extends MyTrait
Compiler will show you the error message, that MyClass has to be abstract, as it does't override myVal
method, but adding val
or var
to the class constructor parameter will solve the issue.