関数/変数

Q1
ユーザ定義関数の引数で関数呼出元に値を返す

A1
[解決方法]
ユーザ定義関数の引数で関数呼出元に値を返す方法として下記の方法があります。
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";
}

管理番号: FncM_002
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser Mobile・Biz/Designer Mobile TIPS集 トップへ