0x001 COULDNT_FIND_FUNCTION

関数[identifier]は無効または定義されていません


taiseiue | 2024-11-21

クラスやスコープ、変数の拡張メソッドに存在しない関数を使用しようとしました。関数名のスペルを確認して、使用中のライブラリやファイルの読み込みが正常に行われていることを確認して、使用しようとしている関数名が使用できることを確認してください。

この例外は、以下のような状況で発生します。

ケース1 定義されていない拡張メソッドを呼び出そうとした

この例外は、定義されていない拡張メソッドを呼び出そうとした場合に発生します。次の例を参照してください。

AliceScript
string str = "text";
str.Invoke();//string型にInvokeメソッドはないためエラー

ケース2 定義されていない関数をオーバーロードしようとした

この例外は、定義されていない関数をオーバーロードしようとした場合にもよく発生します。次の例を参照してください。

AliceScript
function override DoSomething()//DoSomethingが定義されていない場合にエラー
{
    //...
}

DoSomethingがまだ定義されていない時点でこのコードを実行した場合、「identifierに対応するオーバーロードを解決できませんでした」とメッセージを付けて例外が発生します。

ケース3 オーバーロードを解決できなかった

この例外は、関数バインディングを使ってAliceScriptから他の言語の関数やメソッドを呼び出そうとしたときに発生します。

このとき、'identifier'という名前の関数は確かに存在しますが、この関数の呼び出しには、指定された数および型の引数が指定できません。次の例を参照してください。

Define.cs
static class MyFunctions
{
    public static void DoSomething(int x,int y)//このメソッドをAliceScriptにバインド
    {
        //...
    }
}
AliceScript
MyFunctions.DoSomething(2);//引数の不足
MyFunctions.DoSomething(2,"A");//型の不一致