ユーザ定義関数
From Second Life Wiki
Second Life Wiki > ユーザ定義関数 (Redirected from User-defined functions/ja)
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); } }

