Составной шаблон дизайна в Scala


Ниже приведен личный попытка на выполнение составной шаблон дизайна в Scala. Наблюдение - это абстрактно...

class CompositeObservation(obss: Observation*) extends Observation {
  val elements: MutableList[Observation] = new MutableList[Observation]()

  elements ++ obss

  def hasElement(o: Observation): Boolean = elements.contains(o);
}

hasElement не возвращается, если элемент содержится в композите. Вопросы:

  1. Я неправильно истолковал оператор++? Наблюдение*?
  2. Что самое ideomatic пути к реализации этой модели в Scala?


710
0
задан 15 сентября 2011 в 04:09 Источник Поделиться
Комментарии
1 ответ


  1. ++ возвращает новую коллекцию, вам нужно ++= здесь

  2. Ваша попытка выглядит хорошо для меня. Может быть, вы должны дополнительно выполнять проходимый черта или так, и делегировать вызовы элементы для того, чтобы сделать вещи немного более удобным.

[Править]

class CompositeObservation(obss: Observation*) 
extends Observation with Traversable[Observation] {

val elements = new MutableList[Observation]()

elements ++= obss

def hasElement(o: Observation): Boolean = elements.contains(o);

def foreach[U](f: (Observation) => U): Unit = elements.foreach(f)
}

2
ответ дан 15 сентября 2011 в 06:09 Источник Поделиться