ユーザ定義関数

From Second Life Wiki

Second Life Wiki > ユーザ定義関数 (Redirected from User-defined functions/ja)
Jump to: navigation, search

LSL ではユーザ定義関数を扱えます。構文は非常にシンプルです:

 
 
return_type variable_name(par1type par1name, par2type par2name,...)
  {
    function_statements;
    .
    .
    .
    return value_of_return_type;
  }
 

"function" や "def" といったキーワードや、関数の型/継承を指定する必要はありません。引数の数や組み合わせにどのような制限が (もしあれば) あるのか、私はまだ知りません。下の例のように、引数の型はまちまちで構いません。list 型を戻り値にできますので、一つの関数が複数の値を含めたリストを返せます。ユーザ定義関数によってスクリプトは簡潔で読みやすくなり、基本的なコードの再利用が可能になります。LSL スタイルガイドでは、ユーザ定義関数は default ステートの前、ユーザ定義変数の後に置かれるべきとしています。ユーザ定義関数を最初のステートの後に記述すると、Syntax Error になるでしょう。

簡単な例を 2 つ挙げます:

 
 
float xsquared(float x)   // 引数の二乗を返します
{
    return x*x;
}
 
vector scalarmult(vector vIn, float sMult)  // スカラーとベクトルの積を返します
{
    vIn.x=vIn.x*sMult;
    vIn.y=vIn.y*sMult;
    vIn.z=vIn.z*sMult;
    return vIn;
}
 
 
 
default
{
    state_entry()
    {
        llWhisper(0, "Some user functions");
    }
 
    touch_start(integer total_number)
    {
        float testx=3;
        llWhisper(0,"testx squared :"+(string)xsquared(testx));
        vector testVector = <1,2,3>;
        testVector = scalarmult(testVector,testx);
        llWhisper(0,"test vector is:"+(string)testVector);
    }
}
 
 
 
Personal tools
In other languages