关联数组(Map)

关联数组(Map)

在 LeekScript 中,既有“经典”的 Array 类型数组,也有 Map 类型的关联数组。

这种有点特别的数组可以解决这样一个问题:假设我想把我的韭菜的各项特性记在内存里,比如力量、智慧、抗性…… 于是我做了一个数组:

var monPoireau = []; push(monPoireau, getStrength()); push(monPoireau, getWisdom()); push(monPoireau, getResistance());

现在的问题是,我必须记住力量在第 1 格、智慧在第 2 格、抗性在第 3 格……眼下还好,可两个星期以后,我肯定全忘光了!

解决办法:与其给格子编号,不如给它们起一个明确的名字,这样更巧妙。这是可以做到的,它就叫关联数组!

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 = [:];

在严格模式下,这种类型声明是必不可少的:对于只用 var m = [:] 声明的 Map,插入操作无法通过编译(类型错误),而对于 Map 则可以。

然后可以这样遍历这个 map:

for (string maCle : integer maValeur in maMap) { debug("Pour la clé " + maCle + " la valeur qui correspond est " + maValeur); }

现在,轮到你来使用它们了。 你会发现,一旦学会了用它们,就再也离不开了!