2013-05-01 1 views
1

Я хочу сделать следующий пример, так что воротник неизмененчерты с неизменными paramiters в Скале

trait Collar{ 
    var text:String=""; 
    } 

    class dog(val name:String){ 
    def bark()= ... 
    } 

    val snoopy = new dog("snoopy") with Collar; 
    snoopy.text="charley's dog"; 
    println(snoopy.text) 

Однако, когда я пытаюсь что-то вроде

trait Collar(val text:String){ 
    } 

я получаю ошибку во время компиляции

traits or objects may not have parameters 

Есть ли в настоящее время способ сделать это? Если нет, почему бы и нет?

Помните, что хорошей собаке все равно, когда у нее есть ошейник.

ответ

2

Не совсем уверен, что ваш реальный вопрос, но, возможно, это то, что вы ищете:

trait Collar{ 
    val tagText: String // 'val', not 'var'; left undefined here 
} 

class Dog(val name:String) { 
    def bark()= ... 
} 

val snoopy = new Dog("snoopy") with Collar { 
    val tagText= "charley's dog" 
} 
println(snoopy.tagText) 

В качестве альтернативы, Collar.tagText может быть установлен с начальным значением/по умолчанию, а также быть переопределены где создается экземпляр Dog.

+0

Это именно то, что я искал. Благодаря! – user833970

 Смежные вопросы

  • Нет связанных вопросов^_^