Что нового

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

Oki

Продвинутый
Сообщения
452
Репутация
62
Из описания некоторых функций (например, Call()) следует, что язык поддерживает функции с неограниченным количеством параметров. К сожалению, не показано, как этой возможностью воспользоваться при написании пользовательской функции.
 
Последнее редактирование:

Prog

Продвинутый
Сообщения
537
Репутация
65
Через массив можно передать в функцию любое число переменных.
 
Автор
Oki

Oki

Продвинутый
Сообщения
452
Репутация
62
Через массив можно передать в функцию любое число переменных.
Была опечатка в теме и вопросе. Имелось в виду неограниченное количество параметров, а не переменных. Пофикшено. Понятно, что можно создавать новый массив при каждом вызове функции и передавать всё таким образом в обе стороны, но это не всегда удобно. Хорошо, если есть функционал, позволяющий действовать более прямо.
 
Последнее редактирование:

Prog

Продвинутый
Сообщения
537
Репутация
65
В справке есть пример
Код:
Func Test_Numparams($v1 = 0, $v2 = 0, $v3 = 0, $v4 = 0, $v5 = 0, $v6 = 0, $v7 = 0, $v8 = 0, $v9 = 0, _
        $v10 = 0, $v11 = 0, $v12 = 0, $v13 = 0, $v14 = 0, $v15 = 0, $v16 = 0, $v17 = 0, $v18 = 0, $v19 = 0)
    #forceref $v1, $v2, $v3, $v4, $v5, $v6, $v7, $v8, $v9, $v10, $v11, $v12, $v13, $v14, $v15, $v16, $v17, $v18, $v19
    Local $val
    For $i = 1 To @NumParams
        $val &= Eval("v" & $i) & " "
    Next
    MsgBox(0, "Пример с @NumParams", "@NumParams =" & @NumParams & @CRLF & @CRLF & $val)
EndFunc

Test_Numparams(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
 
Автор
Oki

Oki

Продвинутый
Сообщения
452
Репутация
62
То есть предлагаемая идея состоит в том, чтобы заранее определить разумное ограничение для количества параметров, а затем макрокомандой @NumParams получать актуальное количество?

Интересно, таким же образом это работает и в таких функциях, как Call(), или там это реализовано иначе.
 
Последнее редактирование:
Верх