我想用两个对象制作一个合成。我可以用对象嵌套来做到这一点:
object Composition {
object SomePartOfComposition {
// some body
}
}
但是SomePartOfComposition的主体是如此之长,我希望它在一个单独的文件中。我怎么能这样做?
//编辑
我知道,我可以使用特质。但我希望严格的一对一关系 - 它是一个单身人士。
答案 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
}