kar*_*ins 2 constructor scala properties
我刚刚开始使用Scala,并且想知道是否有可能创建一个具有默认值的不可变属性的类,并且我们可以在构造函数中启动传递任何属性值:
因此,例如在JavaScript中,以下是可能的(最终结果不会是不可变的,但你会得到这个想法):
var myObj = function(params){
this.a = params.a || 'default a';
this.b = params.b || 'default b';
this.c = params.c || 'default c';
};
new myObj({c:'override c', b:'override b'});
Run Code Online (Sandbox Code Playgroud)
我会用默认值和新的b和c属性构造我的新对象......正如你所看到的,这里的构造函数以任何顺序接受任意数量的对象属性.
所以在Scala中举一个非常简单的例子:
case class Customer(
val id: Long = 0,
val name: String = ""
)
Run Code Online (Sandbox Code Playgroud)
我知道我可以这样做:
val customer = Customer(0, "company")
Run Code Online (Sandbox Code Playgroud)
但我想这样做:
val customer = Customer{ name = "company" }
Run Code Online (Sandbox Code Playgroud)
所以我最终没有50个构造函数.
可能吗?怎么样?