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;
*/여기 첫 번째 함수에서 주어진 인수 목록을 사용하여 참조된 함수를 호출하고 있습니다.문제는 대체() 대체하다 모두 외부 함수 호출 대신 함수 호출이 포함된 목록.이것은 첫 번째 발생 만 대체하는 것이 좋을 것입니다. 목록() 표현.