たとえば、私は以下のような機能を持っています:
my_function = Function(
{
M_DATA = Empty(),
M_AGE = Empty()
}, {},
);
このような関数を呼び出す方法はありますか
my_function( M_AGE = 12, M_DATA = "Useful info");
年齢とデータは交換されましたが、関数はそれを正しくキャプチャしますか?
私はそうは思いません、JMPは定義された順序で引数をキャプチャします。
順序に依存しない場合は、連想配列などのより複雑なデータ構造を引数として使用できます。
例を参照してください。BR
// function with single arguments
my_function = Function( {M_DATA = Empty(), M_AGE = Empty()},
{},
Show( M_DATA, M_AGE )
);
Print( "swapped arguments are ignored" );
my_function( M_AGE = 12, M_DATA = "Hello" );
// function with associative array AA
my_function_AA = Function( {Local_AA = Empty()},
{},
keys = Local_AA << get keys;
For( i = 1, i <= N Items( keys ), i++,
Show( keys[i], Local_AA[keys[i]] )
);
);
AA = Associative Array( {{"M_AGE", 12}, {"M_DATA", "Hello"}} );
my_function_AA( AA );ありがとう @Georg この回避策のために!実装はそれほど難しくありません。