如果 JMP 允许代替()具有可选参数的函数,例如替换( ...., 第一次出现( 1 ) ) .这将有助于通过引用将参数传递给函数。考虑以下:
some function = Function( {_function, _args},
{Default Local},
function = Name Expr( _function );
Eval( Substitute( _args, {}, Expr( function ) ) )
);
other function = Function( {_1, _2, _3 = "optional"},
Show( _1, _2, _3 )
);
some function( Name Expr( other function ), {1, 2, 3} );
/* OUTPUT
_1 = 1;
_2 = 2;
_3 = 3;
*/
some function( Name Expr( other function ), {1, {2, 4}, 3} );
/* EXPECTED OUTPUT
_1 = 1;
_2 = {2, 4};
_3 = 3;
*/在第一个函数中,我使用给定的参数列表调用一个引用函数。问题是替换()取代全部列出函数调用,而不仅仅是外部调用。这是最好只替换第一次出现的地方列表()表达。