Переменное количество аргументов функции
Нельзя ли распространить приятную особенность языка Lua, дающего возможность поставлять в функцию произвольное количество параметров, на другой язык? Скажем на AFL?
В определенной мере - да, можно. На этапе сборки.
Возьмем функцию Lua math.min(). Ей можно задать произвольное количество параметров (один, два, пять, ...) и она вернет минимальное из всех них значение. Довольно удобно.
В AFL, как и в других "нормальных" языках функция вычисления минимума работает только с двумя аргументами, поэтому для обработки нескольких аргументов ее приходится вызывать несколько раз.
Маленький этюдик на M4 снимает такое ограничение.
define(`Min',`ifelse(eval($#<2),1,`$1',``$0''(`$1',`$0'(shift($@))))')
Теперь:
Min(a) | a | |
Min(a,b) |
Min(a,b) |
|
Min(a,b,c) |
Min(a,Min(b,c)) |
|
Min(a,b,c,d) |
Min(a,Min(b,Min(c,d))) |
Яблони в цвету, беспроводной интернет в беседке, газон и солнце - что еще нужно для...
Конечно, это слива.