Scala中的组合,基于对象(单例)

时间:2011-05-29 17:43:47

标签: scala object composition

我想用两个对象制作一个合成。我可以用对象嵌套来做到这一点:

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

但是SomePartOfComposition的主体是如此之长,我希望它在一个单独的文件中。我怎么能这样做?

//编辑

我知道,我可以使用特质。但我希望严格的一对一关系 - 它是一个单身人士。

3 个答案:

答案 0 :(得分:5)

object Composition {
  object SomePartOfComposition extends SomePartTrait
}

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

答案 1 :(得分:5)

您尚未指定为什么一个对象嵌套在另一个对象中很重要,因此我假设您只希望语法看起来像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
}

如果这不是您想要的,请编辑问题以解释所有标准。

答案 2 :(得分:5)

通过将特征的自我类型定义为对象的类型,您可以在使用特征时具有严格的一对一关系:

object Composition {
  object SomePartOfComposition extends SomePartOfCompositionTrait
}

trait SomePartOfCompositionTrait {
  this: Composition.SomePartOfComposition.type =>
  // body
}