1
例如,在C++我可以這樣做:在scala中,你如何從不同的輸入實例化一個類?
class x {
int _a;
int _b;
int _c;
public:
x(int a, int b, int c) { _a = a; _b = b; _c = c; }
x(y& other) {
sometype z = deserialize(y)
// ...do some magic
_a = z.a; _b = z.b; _c = z.c;
}
}
所以可以實例(X)由離散的參數(3個整數),或定義構造,其中我接受(Y)的一個實例,反序列化它並從中提取數據。
斯卡拉我希望有這個,這是不行的,因爲我不能有別的調用主構造
case class x (int a, int b, int c) {
def this(from:y) {
val z = deserialize(x); // this will fail
// do some magic;
this(z.a, z.b, z.c)}
}
我可以採取替代構造邏輯之前和外化它做在創建對象之前由一個助手創建,但如果可能的話,我想保留封裝。
對此有更好的模式嗎?
謝謝。我需要對伴侶物品做更多的閱讀,我想,我沒有想到它就在手邊。斯卡拉使這麼多事情變得簡單,但有些事情感到麻煩。 – 2014-09-23 14:37:12