0

二次コンストラクタの引数を確認したいのですが、最初に一次コンストラクタを呼び出さなければなりません。1 つの方法は、 への呼び出し内にチェックを入れるthisことですが、条件が複雑な場合は見苦しくなります。

def this(initDollars: Int, initCents: Int) = {
    this(if (initDollars >= 0 && initCents >= 0) initDollars * 100 + initCents else throw new Exception("Negative values"))
  }

それを行うより良い方法はありますか?

4

2 に答える 2

2

最初にプライマリ コンストラクターを呼び出して、後で確認してみませんか? 結果は同じです。

def this(initDollars: Int, initCents: Int) = {
    this(initDollars * 100 + initCents)
    assert(initDollars >= 0 && initCents >= 0, "Negative values")
}

代替手段は、apply-method を使用したコンパニオン オブジェクトです。

于 2013-05-26T17:39:03.703 に答える