D Language
Динамические массивы и фрагменты
Поиск…
Синтаксис
- <тип> [] <имя>;
замечания
Слайсы генерируют новый вид существующей памяти. Они не создают новую копию. Если ни один фрагмент больше не ссылается на эту память - или нарезанная часть - он будет освобожден сборщиком мусора.
Используя срезы, можно написать очень эффективный код, например, парсеров, которые просто работают на одном блоке памяти и просто нарезают части, на которых они действительно нуждаются, - не нужно выделять новые блоки памяти.
Объявление и инициализация
import std.stdio;
void main() {
int[] arr = [1, 2, 3, 4];
writeln(arr.length); // 4
writeln(arr[2]); // 3
// type inference still works
auto arr2 = [1, 2, 3, 4];
writeln(typeof(arr2).stringof); // int[]
}
Операции с массивами
import std.stdio;
void main() {
int[] arr = [1, 2, 3];
// concatenate
arr ~= 4;
writeln(arr); // [1, 2, 3, 4]
// per element operations
arr[] += 10
writeln(arr); // [11, 12, 13, 14]
}
Ломтики
import std.stdio;
void main() {
int[] arr = [1, 2, 3, 4, 5];
auto arr2 = arr[1..$ - 1]; // .. is the slice syntax, $ represents the length of the array
writeln(arr2); // [2, 3, 4]
arr2[0] = 42;
writeln(arr[1]); // 42
}
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow