枚举与迭代都提供遍历集合对象元素的功能。
一.枚举
指调用一个枚举函数、一次性列举出集合中的元素,通常需要指定一个触发器函数作为参数。枚举函数以enum作为前缀。例如,winex.enum枚举函数可以列举出所有的桌面窗口。
io.open();
import winex;
winex.enum(
function(hwnd,depth){
..io.print(depth,hwnd,win.getText(hwnd);
}
}
所有枚举函数在设计时必须遵守约定:返回false停止枚举。
二.迭代
迭代函数通常用于for…in语句中,创建一个迭代器,用于遍历集合成员。迭代函数以each作为前缀。例如com.each函数、winex.each函数。
io.open();
import winex;
for hwnd,title,theadId in winex.each(){
io.print(hwnd,title,theadId);
}
三.迭代与枚举的区别
迭代是广度遍历,通常是在同一深度遍历集合对象,在一个循环中每次迭代出集合中的一个成员。
枚举可以通过递归深度遍历集合,一次性列举出集合中的元素。