斯卡拉。部分课程

时间:2015-09-07 20:15:52

标签: 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()

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

1 个答案:

答案 0 :(得分:8)

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

// file 1:
class MainClass extends Functionality1, Functionality2

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

// file 3:
trait Functionality2 {
  self: MainClass =>
}

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