Рассмотрим фрагмент кодаПовторное использование переменных в базовом классе в производном классе: Scala
trait MyTrait{
val x: Int = 0
}
case class MyClass(y: Int = 1, z: Int = 2) extends MyTrait
//script starts now
val myClass = MyClass(3,4)
myClass.copy(x, 5)
Почему это не работает? В нем указана неопределенная переменная x. Я знаю, что это может быть написано как
case class MyClass(override val x:Int = 0, y: Int = 1, z: Int = 2) extends MyTrait
Но я хочу знать, почему я не могу использовать значения по умолчанию?
EDIT
В таком случае это невозможно установить переменную х MyTrait в?
Пожалуйста, укажите причину downvoting вопрос, так что я могу улучшить его в будущем. – Sohaib
'myClass.copy (x, 5)' Что вы ожидаете от этого? Сделайте копию и установите x на 5? Прямо сейчас, если бы существовал x в области видимости, он бы установил y на значение этого x и z до 5. –
@Paul Да, это было намерением. Я просто изучаю scala. Итак, из-за этого дизайна мы не можем фактически установить x сейчас? – Sohaib