[解決方法]
ユーザ定義関数の引数で関数呼出元に値を返す方法として下記の方法があります。
Function OnTouch( e ){
var data = new Record{
String a = "abc";
String b = "def";
String c = "ghi";
}
print( "data.a=", data.a, " data.b=", data.b, " data.c=", data.c, "\n" );
/* 結果 data.a= abc data.b= def data.c= ghi */
func( data );
print( "data.a=", data.a, " data.b=", data.b, " data.c=", data.c, "\n" );
/* 結果 data.a= def data.b= ghi data.c= abc */
func( "xyz" ); /* パラメータエラーが発生 */
}
Function func( param ){
if( param.a == null || param.b == null || param.c == null ){
throw new Exception( "API", 1, "パラメータエラー" );
}
var s = param.a.valueOf();
param.a = param.b;
param.b = param.c;
param.c = s;
}
引数にStringやNumberオブジェクトなどを指定し、実現することも可能ですが、 文字列定数や数値定数を引数に指定された場合など、期待と異なる結果になる可能性がありますので、注意が必要です。
Function OnTouch( e ){
var data = new String( "abc" ); ・・・(a)
func( data );
print( "data=", data );
/* 結果 data= xyz */
data = "abc"; ・・・(b)
func( data );
print( "data=", data );
/* 結果 data= abc */
}
Function func( param ){
/* (a)(b)どちらの方法で引数が指定されたか、判断することができません */
param.Value = "xyz";
}
|