Форум » [x]Harbour » Динамический вызов функции с произвольным количество аргументов » Ответить

Динамический вызов функции с произвольным количество аргументов

SkyNET: Добрый вечер. Есть функция, принимающая произвольное количество аргументов через HB_AParams(). Как вызвать эту функцию, передав ей массив собственных аргументов для HB_AParams()? Вызываемую функцию при этом редактировать нельзя. Вопрос в виде кода: [pre2]PROCEDURE Main() LOCAL aData := {1,2,3,4} // Как вызвать Test() заполнив её аргументами из aData ? // Чтобы рантайм вызвал Test(1,2,3,4) RETURN // Эту функцию редактировать нельзя... FUNCTION Test() LOCAL aParams := HB_AParams() FOR nI := 1 TO LEN(aParams) ? aParams[nI] NEXT RETURN NIL[/pre2] Пример решения проблемы на JavaScript: [pre2] var data = [1,2,3,4]; Test(1,2,3,4); // Обычный вызов функции Test.apply(null, data); // Вызов полностью аналогичный предыдущей функции function Test() { for (var i=0;i<arguments.length; i++) { console.log((i+1) + " : " + arguments); } } [/pre2]

Ответов - 2

alkresin: Test( hb_arrayToParams(aData) )

SkyNET: alkresin пишет: Test( hb_arrayToParams(aData) ) Спасибо, работает!



полная версия страницы