я задал следующий вопрос if a variable is defined in a class extends a trait, how to use it in the trait?почему вал работать, но вар не в конструкторе в этом случае (Скале)
И один из ответа, как показано ниже:
trait T1 { def a: String; def x = a.length }
class Test(val a: String) extends T1
Но если работает только :
- определит в T1, как «Защита а», если я использую «Вэлы а» или «вар а», то он не работает
- определит в тесте, как «в l a ", если я просто использую" a ", что означает по умолчанию значение" var a ", оно также не работает.
Почему это происходит?
«Это не работает» не описывает ошибку, которую вы видите. * Всегда * описывайте фактическую ошибку. –
Работает для меня: 'scala> trait T1 {val a: String; Защиту х = a.length} определена черта T1 Scala> Класс Test (значение: с String) расширяет T1 определенный класс Test > новый Scala Test ("Foo") х res0:. Int = 3' – Dima
Это Безразлично 't "по умолчанию' var a' "- если вы пишете' class Test (a: String) ', то это * not * совпадает с' class Test (var a: String) '. Для классов case это то же самое, что 'val a', но не' var a'. – Jesper