В LeekScript существуют «классические» массивы типа «Array» и ассоциативные массивы типа «Map».
Этот несколько особенный вид массива помогает решить такую задачу: предположим, я хочу сохранить характеристики своего лука-порея — силу, мудрость, сопротивление и т. д. Я сделал массив:
var monPoireau = []; push(monPoireau, getStrength()); push(monPoireau, getWisdom()); push(monPoireau, getResistance());
Теперь моя проблема в том, что нужно помнить: сила лежит в 1-й ячейке, мудрость — во 2-й, сопротивление — в 3-й... Прямо сейчас это ещё ничего, но через 2 недели я всё напрочь забуду!
Решение: вместо того чтобы нумеровать ячейки, было бы куда разумнее дать им понятные имена. И это возможно — так работают ассоциативные массивы!
var monPoireau = [:]; monPoireau["force"] = getStrength(); monPoireau["sagesse"] = getWisdom(); monPoireau["resistance"] = getResistance(); debug( monPoireau ); // Выведет что-то вроде ["force" : 150, "sagesse" : 20, "resistance" : 95] debug( monPoireau["force"] ); // Выведет 150
Понятные имена (их называют ключами) здесь — "force", "sagesse" и "resistance". В этом примере видно, как их объявлять и как ими пользоваться. Ключами могут быть целые числа или строки.
Удобно! Но как тогда перебрать ассоциативный массив?
Следующий цикл:
for (var k = 0; k maMap = [:];
В строгом режиме такая типизация обязательна: для Map, объявленной просто как var m = [:], вставки не компилируются (ошибка типа), тогда как для Map они допускаются.
Затем map можно перебрать так:
for (string maCle : integer maValeur in maMap) { debug("Pour la clé " + maCle + " la valeur qui correspond est " + maValeur); }
Теперь ваша очередь ими пользоваться. Вот увидите: стоит научиться — и без них уже не обойтись!
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.