Skip to content

Latest commit

 

History

History
194 lines (170 loc) · 2.98 KB

containers.md

File metadata and controls

194 lines (170 loc) · 2.98 KB

Контейнеры

List (список или массив)

Декларация

my_list = [1, 2, 3, 4]
auto myArray = [1, 2, 3];

Конкатенация

left_list + right_list
leftArray ~ rightArray;

Добавление элемента

names.append('Alex')
names ~= "Alex";

Проверка наличия элемента

'Alex' in names_list
import std.algorithm;
namesArray.canFind("Alex");

Удаление элемента

del names_list[0]
del names_list[1:3]
import std.algorithm;
import std.typecons;
names = names.remove(0);
names = names.remove(tuple(1, 3));

Срез (slicing)

names[1:3]
names[:-1]
names[1:]
names[1..3]
names[0..$-1]
names[1..$]

Длина

len(names)
names.length

Индекс элемента

names.index('Alex')
import std.algorithm;
names.countUntil("Alex");

Dictionary (словарь или ассоциативный массив)

Декларация

point = {'x': 0.52, 'y': 42, 'z': 1.3}
auto point = ["x": 0.52, "y": 42, "z": 1.3];

Итерация

for key, value in my_dict.items():
    pass
for key, value in my_dict.keys():
    pass
for key, value in my_dict.items():
    pass
foreach(key, value; myDict) {
    // ...
}
foreach(key; myDict.keys) {
    // ...
}
foreach(value; myDict.values) {
    // ...
}

Добавление элемента

my_dict[key] = value
myDict[key] = value;

Проверка ключа

key in my_dict
(key in MyDict) !is null;

Удаление

del my_dict['a']
myDict.remove("a");

Tuple (кортеж)

Декларация

pair = x1, x2,
import std.typecons;
auto pair = tuple(x1, x2);

Передача кортежа как набора аргументов

add(*pair)
import std.typecons;
add(pair.expand);

Получение значение по индексу

x = (1, 2)[0]
import std.typecons;
auto x = tuple(1, 2)[0];

Функционал кортежей в D скуднее чем в Python. Нельзя конкатенировать их, присваивать набору переменных значения кортежа. Кортеж в D может быть именованым кортежем.

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
point = Point(1, 2)
import std.typecons;
alias Point = tuple!("x", "y");
auto point = Point(1, 2);

Или

from collections import namedtuple
point = namedtuple('Point', ['x', 'y'])(1, 2)
import std.typecons;
auto point = tuple!("x", "y")(1, 2);

Получение элемента по названию поля

x = point.x
auto x = point.x;