Компилятор Делавар. Нововведения в языке. Функции — различия между версиями
Админ (обсуждение | вклад) (Новая страница: « == См. также == * Компилятор Делавар Категория:Компилятор Делавар Категория:Ubuntu {{i}}») |
Дизайнер (обсуждение | вклад) м |
||
Строка 1: | Строка 1: | ||
+ | '''Нововведения в языке. Функции''' | ||
+ | Ключевое слово function больше не используется для объявления функции. Исчезло также ключевое слово declaraton. Для декларации функции используется следующий синтаксис: | ||
+ | ret_type [modif] function_name([param_list]) | ||
+ | |||
+ | Например: | ||
+ | string __stdcall GetName(int id) | ||
+ | |||
+ | По умолчанию используется конвенция вызова функции, принятая для языка Си: __cdecl. Возможно использование модификатора __stdcall, принятого для вызова функций Win32 API. Параметры функции разделяются запятыми. | ||
+ | |||
+ | Возвращаемые значения и параметры функции на данный момент не могут быть многомерными массивами ссылочного типа (не реализовано); возвращаемые значения функции не могут быть также значимыми составныи типами или массивами. Параметры базовых типов передаются по значению, пользовательские типы и массивы - по ссылке. Возможна передача параметров базового типа по ссылке при использовании ключевого слова ref. Передать параметр с использованием этого ключевого слова возможно также и для ссылочных типов. | ||
+ | |||
+ | Если задан прототип функции, и отсутствует тело функции в файле исходного кода, то такая функция считается определенной во внешней библиотеке (модуле). Например: | ||
+ | |||
+ | // Функция printf определена во внешней библиотеке | ||
+ | int printf(string, ...) | ||
+ | |||
+ | int Sum(int a, int b) | ||
+ | { | ||
+ | return a + b | ||
+ | } | ||
+ | void Start() | ||
+ | { | ||
+ | printf("%d", Sum(1, 2)) | ||
+ | } | ||
+ | |||
+ | Троеточие в параметрах прототипа функции printf, как и положено означает, наличие переменного числа параметров, первый из которых, в данном случае, обязателен. Однако, в языке возможность определения функций с переменным числом параметров не реализована. | ||
+ | |||
+ | Также стало возможным использование полиморфных функций и методов: | ||
+ | |||
+ | void foo(string text, bool f) | ||
+ | { | ||
+ | } | ||
+ | void foo(string text) | ||
+ | { | ||
+ | foo(text, true) | ||
+ | } | ||
+ | |||
+ | У функции Start (точка входа в программу) появилась возможность получать параметры командной строки (за исключением формата COM). Синтаксис стандартен: | ||
+ | |||
+ | void Start(int argc, string[] argv) | ||
+ | { | ||
+ | } | ||
== См. также == | == См. также == |
Текущая версия на 21:57, 13 января 2016
Нововведения в языке. Функции
Ключевое слово function больше не используется для объявления функции. Исчезло также ключевое слово declaraton. Для декларации функции используется следующий синтаксис:
ret_type [modif] function_name([param_list])
Например:
string __stdcall GetName(int id)
По умолчанию используется конвенция вызова функции, принятая для языка Си: __cdecl. Возможно использование модификатора __stdcall, принятого для вызова функций Win32 API. Параметры функции разделяются запятыми.
Возвращаемые значения и параметры функции на данный момент не могут быть многомерными массивами ссылочного типа (не реализовано); возвращаемые значения функции не могут быть также значимыми составныи типами или массивами. Параметры базовых типов передаются по значению, пользовательские типы и массивы - по ссылке. Возможна передача параметров базового типа по ссылке при использовании ключевого слова ref. Передать параметр с использованием этого ключевого слова возможно также и для ссылочных типов.
Если задан прототип функции, и отсутствует тело функции в файле исходного кода, то такая функция считается определенной во внешней библиотеке (модуле). Например:
// Функция printf определена во внешней библиотеке int printf(string, ...)
int Sum(int a, int b) { return a + b } void Start() { printf("%d", Sum(1, 2)) }
Троеточие в параметрах прототипа функции printf, как и положено означает, наличие переменного числа параметров, первый из которых, в данном случае, обязателен. Однако, в языке возможность определения функций с переменным числом параметров не реализована.
Также стало возможным использование полиморфных функций и методов:
void foo(string text, bool f) { } void foo(string text) { foo(text, true) }
У функции Start (точка входа в программу) появилась возможность получать параметры командной строки (за исключением формата COM). Синтаксис стандартен:
void Start(int argc, string[] argv) { }
См. также
Яндекс | Картинки | Видео | Карты | Карты ОСМ | Спутник | Гугл | Вольфрам-Альфа | РуВики | EnWiki