Germany | Finland | Saint Petersburg | Drive

Переменное количество аргументов функции

Опубликовано в M4

Нельзя ли распространить приятную особенность языка 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)))

 

 


Яблони в цвету, беспроводной интернет в беседке, газон и солнце - что еще нужно для...

 Конечно, это слива. Смеюсь

Добавить комментарий


Библиотека