Scala中基于对象(单例)的合成
我想用两个物体做一个构图。我可以通过对象嵌套来实现:Scala中基于对象(单例)的合成,scala,object,composition,Scala,Object,Composition,我想用两个物体做一个构图。我可以通过对象嵌套来实现: object Composition { object SomePartOfComposition { // some body } } 但是SomePartOfComposition的主体太长了,所以我希望它放在一个单独的文件中。我该怎么做 //编辑 我知道,我可以使用特质。但是我需要严格的一对一关系-它是一个单例。您没有指定一个对象嵌套在另一个对象中的原因,因此我假设您只希望语法看起来像a.B。因此: object Co
object Composition {
object SomePartOfComposition {
// some body
}
}
但是SomePartOfComposition的主体太长了,所以我希望它放在一个单独的文件中。我该怎么做
//编辑
我知道,我可以使用特质。但是我需要严格的一对一关系-它是一个单例。您没有指定一个对象嵌套在另一个对象中的原因,因此我假设您只希望语法看起来像a.B。因此:
object Composition {
object SomePartOfComposition extends SomePartTrait
}
trait SomePartTrait{
//in it's own file
//implement the body here
}
如果这不是您想要的,请编辑问题以解释所有标准。您没有指定一个对象嵌套在另一个对象中的原因,因此我假设您只希望语法看起来像A.B。因此:
如果这不是您想要的,请编辑问题以解释所有标准。使用特征时,您可以通过将特征的自我类型定义为对象的类型来建立严格的一对一关系:
object Composition {
object SomePartOfComposition extends SomePartOfCompositionTrait
}
trait SomePartOfCompositionTrait {
this: Composition.SomePartOfComposition.type =>
// body
}
使用特征时,通过将特征的自我类型定义为对象的类型,可以建立严格的一对一关系:
object Composition {
object SomePartOfComposition extends SomePartOfCompositionTrait
}
trait SomePartOfCompositionTrait {
this: Composition.SomePartOfComposition.type =>
// body
}
是的,它会起作用,但它不是一对一的关系,每个物体都可以有这种特性。是的,这是正确的。这是一个特性,而不是bug,因为它支持重用。如果您确实需要所描述的gaurantee,则需要使用文本包含。将所有字段定义为公共变量可能也会被视为未来,但事实并非如此;。如果你想得到一个像样的答案,你需要澄清为什么你需要这样的限制。是的,它会起作用,但它不是一对一的关系,每个物体都可以有这个特点。是的,这是正确的。这是一个特性,而不是bug,因为它支持重用。如果您确实需要所描述的gaurantee,则需要使用文本包含。将所有字段定义为公共变量可能也会被视为未来,但事实并非如此;。如果你想得到一个像样的答案,你需要澄清为什么你需要这样的限制。哇,这太令人印象深刻了。我不知道这是可能的,而且我绝对肯定我永远不会这么做。@Dave Griffith:是的,看起来人们不应该这么做,但当我读到《我知道》时,我突然想到我可以使用特质。但我想要严格的一对一关系。哇,这太令人印象深刻了。我不知道这是可能的,而且我绝对肯定我永远不会这么做。@Dave Griffith:是的,看起来人们不应该这么做,但当我读到《我知道》时,我突然想到我可以使用特质。但我想要严格的一对一关系。