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

cie*_*bor 1 scala object composition

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

object Composition {
  object SomePartOfComposition {
    // some body
  }
}
Run Code Online (Sandbox Code Playgroud)

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

//编辑

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

Dav*_*ith 5

object Composition {
  object SomePartOfComposition extends SomePartTrait
}

trait SomePartTrait{
   //in it's own file
   //implement the body here
}
Run Code Online (Sandbox Code Playgroud)


Rex*_*err 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
}
Run Code Online (Sandbox Code Playgroud)

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


kas*_*ens 5

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

object Composition {
  object SomePartOfComposition extends SomePartOfCompositionTrait
}

trait SomePartOfCompositionTrait {
  this: Composition.SomePartOfComposition.type =>
  // body
}
Run Code Online (Sandbox Code Playgroud)