Композиция в Scala, основанная на объектах (синглетонах) - PullRequest
1 голос
/ 29 мая 2011

Я хочу сделать композицию из двух предметов.Я могу сделать это с вложением объектов:

object Composition {
  object SomePartOfComposition {
    // some body
  }
}

Но тело SomePartOfComposition такое длинное, что я хочу его в отдельном файле.Как я могу это сделать?

// edit

Я знаю, что могу использовать черту.Но я хочу строгое отношение один к одному - это одиночка.

Ответы [ 3 ]

5 голосов
/ 29 мая 2011

Вы не указали, почему так важно, что один объект вложен в другой, поэтому я предполагаю, что вы просто хотите, чтобы синтаксис был похож на A.B.Итак:

//File A
object A {
  val B = C
}

// File C
object C {
  import A._
  // All your code, written just like it was placed inside A
}

Если это не то, что вы хотите, отредактируйте вопрос, чтобы объяснить все критерии.

5 голосов
/ 29 мая 2011

Вы можете иметь строгое отношение один к одному при использовании черт, определив собственный тип черты как тип объекта:

object Composition {
  object SomePartOfComposition extends SomePartOfCompositionTrait
}

trait SomePartOfCompositionTrait {
  this: Composition.SomePartOfComposition.type =>
  // body
}
5 голосов
/ 29 мая 2011
object Composition {
  object SomePartOfComposition extends SomePartTrait
}

trait SomePartTrait{
   //in it's own file
   //implement the body here
}
...