Новость из категории: Информация

Язык программирования D: особенности

Содержание:
1. Массивы и строки (Вы читаете данный раздел);
2. Семантика и шаблоны;
3. Функциональные типы и делегаты;
4. Модули и их тестирование;
5. Контрактное программирование.
Язык программирования D: особенности

B D есть множество очень интересных особенностей. Перечислить их все в короткой статье невозможно, поэтому кратко опишу только самые полезные и впечатляющие. Базовый синтаксис D практически идентичен С++, так что на нем останавливаться не буду. Не буду касаться и возможностей стандартной библиотеки - во-первых, потому что этих библиотек две, а во-вторых, из-за того, что многие реализованные там решения (например, нетрадиционный подход к многозадачности) будут рассмотрены в заключительной статье, посвященной этому языку.

Автоматическое определение типов

Компилятор D позволяет пропускать тип переменной везде, где он в состоянии определить его однозначно.

Например:
auto b = Some_complex_function();

Функция может возвращать как просто int, так и некий «страшный» шаблонный тип, но знать его не обязательно - достаточно того, что компилятору всегда известен возвращаемый тип функции. Такая функциональность будет в новом стандарте С++0х, но пока в С++ ее остро недостает.

Язык программирования D: особенности

Массивы и строки

Синтаксис объявления массивов отличается от С++ и гораздо более логичен. Сами массивы знают свой размер и поддерживают срезы. Имеются как статические массивы, так и динамические, автоматически меняющие размер при присваивании:
int[] a = new int[20]; // Динамический массив
int[10] b; // Массив постоянного размера
auto sz = a.length; // Массив знает свою длину
a.length = 100; // А так ее можно изменить
int[] c = a[2..6]; // Срез массива - часть между элементами
// 2 и 5 включительно
a[0..10] = a[10..$]; // Знак $ означает последний элемент

Ассоциативные массивы встроены в базовый язык:
int[string] dictionary; // Ключи - строки, значения - числа
dictionary["hello!"] = 4;
string[] k = dictionary.keys; // Получаем все ключи

Строки являются встроенным базовым типом и по умолчанию поддерживают Unicode. Из-за особенностей реализации для корректного посимвольного доступа строку нужно сначала конвертировать в формат UTF-32, а затем обратно в UTF-8 или UTF-16. Это не касается работы со строкой как с целым и обычно не вызывает сложностей. Тем не менее, эту особенность обычно относят к недостаткам языка.

Сборщик мусора

Хотя динамический массив в прошлом примере и создавался оператором new, освобождать память вручную не нужно - в D есть автоматический сборщик мусора, как в Java. Однако в отличие от Java при желании можно брать управление памятью для нужного объекта полностью на себя или явно указывать сборщику мусора, где и когда пора «прибраться».

Рейтинг статьи

Оценка
1/5
голосов: 1
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Похожие новости

Комментарии

^ Наверх