Я пытаюсь определить объект User, который расширяет черту. Черта содержит набор пользовательских объектов. Когда я пытаюсь создать нового пользователя. Я получаю ошибку Stackoverflow, я не могу понять, почемуОшибка StackoverFlow при создании объекта self
scala> :paste
// Entering paste mode (ctrl-D to finish)
case class User(email:String) extends userTrait
trait userTrait {
self:User =>
val administrators = new User("[email protected]")::new User("[email protected]")::Nil
def isAdminstrator = administrators.contains(this)
}
// Exiting paste mode, now interpreting.
defined class User
defined trait userTrait
scala> new User("test")
java.lang.StackOverflowError
... 1024 elided
При создании пользователя с новым пользователем, это initalises администраторов в черте. Что вызывает нового пользователя, который инициализирует администраторов в этом признаке. Что вызывает новый пользователь ..... bang, переполнение стека. Не все очевидно, что вы пытаетесь сделать здесь. –
Я понял. Я хочу, чтобы эта черта содержала набор суперпользователей. Как инициализировать эту коллекцию? – vumaasha
Мне не нравится помещать данные в черты. Я по-прежнему отношусь к ним немного как интерфейсы Java с определенными методами. – goral