Как смешать код времени строительства с классом с чертой в Scala? - PullRequest
0 голосов
/ 07 ноября 2011

Я хочу, чтобы все классы, расширяющие черту, сохраняли время своего создания (как экземпляр org.joda.time.DateTime).Черта определяет def dt : DateTime как получатель.Могу ли я также определить код для получения метки времени (которая предназначена для запуска во время построения) в признаке?

ОБНОВЛЕНИЕ: я думаю, что пришел к мысли, как реализовать конкретную задачу, не имея дело сконструкторы (просто определите dt как val и установите для него новый DateTime, возможно, это сработает), но вопрос в заголовке все еще интересен.

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

Нельзя добавлять конструкторов через черты.

0 голосов
/ 07 ноября 2011

Просто замените реализацию def currentTime, чтобы получить экземпляр org.joda.time.DateTime, и смешайте черту с любым классом.

trait Timestamp {
  private def currentTime = {
    import java.util.Calendar._

    val calendar = getInstance

    def hours = calendar.get(HOUR_OF_DAY)
    def minutes = calendar.get(MINUTE)
    def seconds = calendar.get(SECOND)
    def milliseconds = calendar.get(MILLISECOND)

    hours + ":" + minutes + ":" + seconds + ":" + milliseconds
  }

  final val creationTime = currentTime
}
...