斯卡拉.部分课程

Dar*_*ryl 4 scala

scala中的C#部分类是否有任何等价物?我想用这样的对象离开我的功能:

// file 1:
object MainClass {
    def addValue(value: AnyRef) = ???
}

// file 2:
partial object MainClass {
    addValue(1)
}

// file 3:
partial object MainClass {
    addValue(2)
}  

// file 4: initialize MainClass
MainClass.init()
Run Code Online (Sandbox Code Playgroud)

我如何使用scala实现此功能?

axe*_*l22 8

您可以做的最接近的是将您的功能划分为特征,并将它们划分为不同的文件:

// file 1:
class MainClass extends Functionality1, Functionality2

// file 2:
trait Functionality1 {
  self: MainClass =>
}

// file 3:
trait Functionality2 {
  self: MainClass =>
}
Run Code Online (Sandbox Code Playgroud)

请注意,通过使用自我类型并将其设置为MainClass,您可以确保每个特征都可以引用最终将混合到其中的所有成员MainClass.