0

1 ~ 3 個のパラメーターを渡すことができるようにする場合、関数定義を 3 回オーバーロードする必要がないようにすることは可能ですか?

たとえば、次の代わりに:

function(class a) { //this is called if only 1 class is passed
instance 1 = a;
} 
function(class a, class b) {  //this is called if 2 classes are passed
instance1 = a;
instance2 = b;
}
function(class a, class b, class c) { //this is called if 3 classes are passed
instance1 = a;
instance2 = b;
instance3 = c;
}

あなたが持つことができます:

function(class a, <if2class>class b, <if3class>class c) //this is called
                                                        //for all passes
// <ifxclass> is not a real command, I'm using it for demonstration
{
    instance1 = a; //always
    instance2 = b; //if class b is passed
    instance3 = c; //if class c is passed
}

関数呼び出しの場合...

function(first, second) //example of a function call with this code

EDIT:実際の使用のための説明:

bossbattle(biglion, bigtiger);
bossbattle(biglion);
bossbattle(hades, biglion, biglion);
//where inside bossbattle it sets the classes passed in to temporary classes
//for battle. that's why I need a variable number of parameters

私はすでに通常の敵の戦闘システムを作成しており、関数を呼び出して、ランダムな通常の敵の階層化されたパーセンテージに基づいて 1 ~ 3 スポットをランダムに配置します。同じ戦闘システムを使用しようとしていますが、別の機能 (つまりboss battle()) を使用して、戦闘システムにボス戦を追加しようとしています。一時的な敵が戦闘に使用するクラス インスタンスは名前付きの配列にあり、配列の各インスタンスにEnemy battlefield monsters[3]ブール値isaliveがあり、パラメーターが呼び出された場合に true に設定したいbossbattle() ので、たとえば、あるisalive = true場合は3 になります。 3 つのパラメーターが渡されましbossbattle()たが、1 つのパラメーターのみが渡された場合は 1 つだけが true に設定されます。

4

1 に答える 1