dq37281757
@dq37281757 (dq37281757)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

引数を順不同にしたい

Q&A

Closed

解決したいこと

引数リストの順番が違っても結果が同じ場合、書く量を減らす方法があれば教えてください。例えば、Colorクラスを継承したRedクラス、Blueクラス、Purpleクラスがあって、メソッドreturnMixColor(Color c1, Color c2)では代入された色を混ぜてできる色を返すとします。この時、「c1がRed、c2がBlue」の時と、「c1がBlue、c2がRed」の時では結果が同じPurpleになりますが、全て場合分けする以外に何か方法はありますか?

1

1Answer

2つのクラスに大小関係がある場合,よくとられる手法で,

  • 大小関係を比較(例: c1 < c2)
    • 偽である場合,swapする
  • c1とc2の処理をする

とすると,c1の方が小さいときの処理を書くだけでよくなります.

0Like

Comments

  1. @dq37281757

    Questioner

    ありがとうございます。

    if(c1 >= c2){
    Color c = c2;
    c2 = c1;
    c1 = c;
    }
    処理;

    こんな感じでしょうか。引数が3つ以上になっても同じようにして場合分けを減らせるということですね。
  2. そうなりますね,3つ以上の場合は昇順にソートかけると良いと思います.
  3. @dq37281757

    Questioner

    ありがとうございます。この方法でやってみようと思います。

Your answer might help someone💌