📅  最后修改于: 2023-12-03 15:30:26.081000             🧑  作者: Mango
在 Delphi 中,我们可以使用字符串来动态地从其名称调用函数。在 TypeScript 中,我们可以使用反射来实现类似的功能。
function CallFunctionByName(const AFunctionName: string; const AParam: Pointer): Integer;
begin
Result := -1;
try
TMethod(GetProcAddress(HINSTANCE, PChar(AFunctionName)))(AParam);
Result := 0;
except
on E: Exception do
ShowMessage('Failed to call function ' + AFunctionName + ': ' + E.Message);
end;
end;
以上代码演示了如何使用 GetProcAddress
函数来获取函数的指针,然后使用 TMethod
类型来将其转换为可以调用的方法。
在 TypeScript 中,我们可以使用 Function.constructor
函数和 Function.prototype
属性来实现从函数名称调用函数的功能。
function callFunctionByName(functionName: string, ...args: any[]) {
const targetFunction = Function(`return function ${functionName}(...args) {}`)();
return targetFunction.apply(null, args);
}
以上代码演示了如何通过构造函数来创建一个函数,然后使用 apply
方法来调用该函数并传递参数。
从函数名称调用函数是一项非常有用的技能,能够帮助我们动态地使用代码。无论是在 Delphi 中还是在 TypeScript 中,使用稍有不同,但都可以轻松实现该功能。