如何在AutoHotkey中找到关联数组的长度?

时间:2016-07-01 00:51:01

标签: autohotkey associative-array

如果在length()上使用associative array函数,它将返回数组中使用的“最大索引”。因此,如果您有任何非整数的键,则length()不会返回数组中实际的元素数。 (这也可能由于其他原因而发生。)

是否有更有用的length()版本用于查找关联数组的长度?

或者我是否需要实际循环并计算每个元素?我不知道如果事先不知道所有可能的钥匙我会怎么做。

1 个答案:

答案 0 :(得分:5)

如果你有一个平面数组,那么Array.MaxIndex()将返回索引中的最大整数。但是,这并不总是最好的,因为AutoHotKey将允许您拥有一个第一个索引不是1的数组,因此MaxIndex()可能会产生误导。

更糟糕的是,如果您的对象是索引可能包含字符串的关联哈希表,那么MaxIndex()将返回null。

所以最重要的是计算它们。

DesiredDroids := object()
DesiredDroids["C3P0"] := "Gold"
DesiredDroids["R2D2"] := "Blue&White"
count :=0
for key, value in DesiredDroids
    count++
MsgBox, % "We're looking for " . count . " droid" . ( count=1 ? "" : "s" ) . "."

<强>输出

We're looking for 2 droids.