П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 3409 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 5958 раз(а).

Учебник HTML.
Просмотров 3202 раз(а).

Руководство по PHP5.
Просмотров 5419 раз(а).

Хостинг через призму DNS.
Просмотров 4018 раз(а).

Подборка текстов стандартных документов.
Просмотров 55710 раз(а).

Учебник PHP - Самоучитель
Просмотров 2995 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 4573 раз(а).

Внешние атаки...
Просмотров 3732 раз(а).

Учебник PHP.
Просмотров 2767 раз(а).

SSI в примерах.
Просмотров 37384 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Руководство пользователя для GNU Awk

13. Функции, определенные пользователем

13.1 Синтаксис определения функции

Определения функций могут располагаться где угодно между правилами программы awk. Таким образом, общая форма программы awk расширяется и включает последовательности правил и определений функций пользователя. Нет необходимости помещать определения функций перед обращениями к ним, так как awk читает всю программу перед началом ее выполнения.

Определение функции с именем  name выглядит так:

function name(parameter-list) -
body-of-function ""

name есть имя определяемой функции. Правильное имя функции подобно правильному имени переменной: последовательность букв, цифр и подчеркиваний, начинающаяся не с цифры. В пределах одной awk-программы каждое имя может быть использовано как переменная, массив или функция.

parameter-list есть список аргументов функции и локальных имен переменных, разделенных запятыми. Когда функция вызывается, имена аргументов используются для помещения значений аргументов, указанных в вызове. Локальные переменные инициализируются пустыми цепочками. Функция не может иметь двух параметров с одинаковыми именами.

Тело функции состоит из операторов awk. Это наиболее важная часть определения, так как она говорит, что функция должна делать. Имена аргументов существуют, чтобы дать телу возможность различать аргументы; локальные переменные предоставляют телу места для временных значений. Синтаксически имена аргументов неотличимы от имен локальных переменных; вместо этого, количество аргументов, указанных в вызове функции, определяет, как много имеется аргументных переменных. Так, если даны три значения аргументов, первые три имени в списке параметров есть аргументы, а остальные являются локальными переменными. Если количество аргументов не одно и тоже во всех вызовах функции, некоторые имена в списке параметров могут быть аргументами в одних случаях и локальными переменными в других. Иначе говоря, можно считать, что опущенные аргументы по умолчанию получают значение пустой цепочки.

Обычно, когда вы пишите функцию, вы знаете, сколько имен вы намерены использовать для аргументов и сколько для локальных переменных. При программировании обычно помещают несколько дополнительных пробелов между аргументами и локальными переменными для указания того, как функция будет использоваться. Во время выполнения тела функции аргументы и значения локальных переменных прячут, или затеняют, те же самые имена, использованные в остальной программе. Затененные переменные недоступны из определения функции, потому что невозможно обратиться к ним, пока их имена заняты локальными переменными. Все другие переменные, используемые в awk-программе, доступны для ссылок или присваиваний из тела функции. Аргументы и локальные переменные играют особую роль только на время выполнения тела функции. Как только оно окончено, можно опять обращаться к переменным, которые были затенены при выполнении тела.

Тело функции может содержать выражения, которые вызывают функции. Они могут даже вызывать определяемую функцию, или непосредственно или через вызов другой функции. Мы говорим в таких случаях, что функция рекурсивна.

Во многих реализациях awk, включая gawk, ключевое слово function может быть сокращено до func. Однако POSIX указывает только слово function. Фактически это имеет некоторые практические следствия. Если gawk находится в POSIX-совместимом режиме (см. раздел 14.1 [Параметры командной строки], стр. 161), то следующий оператор не определяет функцию:

func foo() - a = sqrt($1) ; print a ""

Он определяет правило, которое для каждой записи сцепляет значение переменной `func' с возвращенным значением функции `foo'. Если цепочка-результат не пуста, действие выполняется. И это, конечно, будет не то, что задумано. (awk принимает такой ввод как синтаксически правильный, поскольку функции могут использоваться раньше их определения в программах.) Для обеспечения переносимости программ употребляйте всегда в определениях ключевое слово function.

Назад | Вперед
Содержание (общее) | Содержание раздела



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru