Автор | Сообщение |
|
| |
Пост N: 109
Зарегистрирован: 23.06.08
|
|
Отправлено: 21.10.18 23:22. Заголовок: Динамический вызов функции с произвольным количество аргументов
Добрый вечер. Есть функция, принимающая произвольное количество аргументов через HB_AParams(). Как вызвать эту функцию, передав ей массив собственных аргументов для HB_AParams()? Вызываемую функцию при этом редактировать нельзя. Вопрос в виде кода: 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 Пример решения проблемы на JavaScript: 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); } }
|
|
|
Новых ответов нет
[см. все]
|
|
|
| moderator
|
Пост N: 1088
Зарегистрирован: 06.07.06
|
|
Отправлено: 22.10.18 09:10. Заголовок: Test( hb_arrayToPara..
Test( hb_arrayToParams(aData) )
|
|
|
|
| |
Пост N: 110
Зарегистрирован: 23.06.08
|
|
Отправлено: 22.10.18 21:34. Заголовок: alkresin пишет: Te..
alkresin пишет: цитата: | Test( hb_arrayToParams(aData) ) |
| Спасибо, работает!
|
|
|
|