открыть: Синтаксис 2Syntax 1

Тип $map

Мапа – это ассоциативный массив. Он задаётся конструкцией {ключ1:значение1, ключ2:значение2}. Элементами мапы являются пары ключ-значение. Пары перечисляются через необязательную запятую, а ключ от значения разделяется двоеточием. В качестве ключа допустимы значения таких типов: $int, $type, $text. Значением в паре может быть что угодно.

empty = {} -- пустая мапа person = {%name: 'Анна', %age: 22, 'рост, см': 165} [person.name, person.age, person['рост, см'], n#] #echo ' ' numbers = {1: %раз, 2: 'два', 3: "три" 5:5} numbers.2 #echo # -- выдаст 'два' -- более сложный пример: { (0-1) #type # : "минус один" $bool : [#0 #1] empty$ #as $text : %map } => map map[$bool, 0] == (map.$bool.1 #not #) ? "\n Yes!\n" #echo # ; -- выдаст ' Yes!'

Автоиндекс

Ключ в паре можно не указывать. В этом случае ключом будет назначен счётчик типа $int, начинающийся с нуля (или с максимального целочисленного ключа, увеличенного на 1).

test = {1:1 2 3 4 "пять":'пропущено' 6:6 7 %восемь:8 9} -- аналогично следующему: test = { 1:1 2:2 3:3 4:4 "пять":'пропущено' 6:6 7:7 'восемь':8 8:9 }

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

При записи в мапу по новуму ключу произойдёт добавление значения в конец.

map = {1:%one 2:%two} map.3 = %three map.# = %four -- автоиндекс map #echo [', ' ":"] -- выдаст: 1:one, 2:two, 3:three, 4:four

Для добавления значения в начало мапы, используя автоиндекс – укажите #0 в качестве ключа.

map = {} map.#0 = 10 map[#0] = 20 map #dump #0 -- выдаст: [1:20, 0:10]

Автоматическое создание мапы

Если значение переменной не является массивом, мапой или объектом класса, то при записи значения по ключу, отличного от null #, произойдёт автоматическое создание мапы.

m = 10 m.5 = %five m #dump #0 -- выдаст: {5:"five"} "\n" #echo # -- перевод строки m = 20 m.five = 5 m #dump #0 -- выдаст: {"five":5}

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

map = {%one:1 %two:2} map #remove %one -- удаление по ключу map #count # #echo # -- выдаст: 0

Смотри также: Цикл each

Вывод мапы на экран

При выводе только значений мапы через #echo правым аргументом указывается только один разделитель элементов:

{%ноль %один %два} => map #echo ', ' -- выдаст: ноль, один, два

Для вывода значений и ключей – правым аргументом native-функции #echo указывается два разделителя: мапа #echo [разделитель_элементов, разделитель_пары_ключ_значение].

{%ноль %один %два} => map #echo [', ' ":"] -- выдаст: 0:ноль, 1:один, 2:два