Jas*_*siu 1 scala nested-class
我正在学习Scala,而且我来自C++(很少有Java经验).我工作的地方经常使用以下模式:
class SomeClass {
public:
class Options {
...
};
SomeClass(const Options& options);
...
};
int main() {
SomeClass::Options options;
options.a = ...;
...
SomeClass* sc = new SomeClass(options);
}
Run Code Online (Sandbox Code Playgroud)
我如何在Scala中模拟它?
这有点等同于:
object SomeClass {
case class Options(option1: String, option2: Boolean)
}
class SomeClass(options: Options) {
//this is constructor!
println(options.option1)
}
object Main extends App {
val options = SomeClass.Options("One", false)
//or even: SomeClass.Options(option1 = "One", option2 = false)
val sc = new SomeClass(options)
}
Run Code Online (Sandbox Code Playgroud)
有关嵌套类的更多信息(不要与Java中的内部类混淆):scala中的静态内部类.
评论:
Options嵌套在SomceClass 对象内,而不是classOptions可以是case class- 这样你就可以免费获得不变性和访问者