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

Язык программирования Vala: строки, массивы и управляющие конструкции

Содержание:
1. Hello world!;
2. Строки, массивы и управляющие конструкции (Вы читаете данный раздел);
3. Делегаты и обобщенные классы;
4. Контрактное программирование и библиотека обобщенных контейнеров Gee
.
Строки

Язык программирования Vala: строки, массивы и управляющие конструкции

Все строки в Vala имеют формат UTF-8. Тип string задает строку произвольной длины, которая является неизменяемым (immutable) объектом. Строку можно объявить как стандартным образом, так и в стиле «строки в тройных кавычках», знакомому по языку Python:
string text = "Обычная строка";
string str = """Строка в тройных кавычках ("verbatim string").

В таких строках не обрабатываются специальные символы n, t, и т.д. Они могут содержать кавычки и занимать несколько строк.""";

Строки, предваряемые символом «@», являются «строковыми шаблонами». В них можно вставлять переменные и выражения с помощью префикса «$», как это делается во многих скриптовых языках. Значения встроенных в строку переменных и выражений автоматически преобразуются к строковому типу. Удобство такого способа форматирования строк трудно переоценить:
int a = 10, b = 20;
string str = @"$a * $b = $(a * b)"; J
// Результирующая строка: "10*20 = 200"

Такие шаблоны не нужно путать со строковыми подмешиваниями (интерпретацией строки как кода) - они являются всего лишь своеобразными макросами.

Получить подстроку или отдельный символ можно с помощью «срезов». Отрицательные значения индексов отсчитывают-ся от конца строки:
string greeting = "hello, world";
string s1 = greeting[7:12]; // => "world"
string s2 = greeting[-4:-2]; // => "or"
unichar c = greeting[7]; // => 'w'

Поддерживаются также многие стандартные строковые функции библиотеки Glib.

Массивы

Массивы в Vala могут быть динамическими (созданными в куче) и статическими (созданными в стеке).
int[] a = new int[10]; // Динамический массив
int f[10]; // Статический массив

Для динамических массивов (но не для статических) поддерживается добавление элементов «на лету»:
int[] e = {}
e += 12;
e += 5;
e += 37;

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

Поддерживаются также многомерные массивы:
int[,] c = new int[3,4];
int[,] d = {
{2, 4, 6, 8},
{3, 5, 7, 9},
{1, 3, 5, 7}};
d[2,3] = 42;

Встроенных ассоциативных массивов в Vala нет, но они доступны в библиотеке контейнеров Gee.

Управляющие конструкции

Синтаксис управляющих конструкций if, for, while, switch в Vala полностью аналогичен синтаксису C/C++. Отдельного внимания заслуживает только конструкция foreach, позволяющая легко перебирать элементы массивов и коллекций:
foreach (int a in int_array) { stdout.printf("%dn", a); }

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

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

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

Поделиться

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

Комментарии

^ Наверх