|
zhoushijay
高级用户
Autowalk
积分 845
发帖 375
注册 2007-3-3
状态 离线
|
『楼 主』:
求助VBS如何创建集合?
我在编写脚本的时候不止一次的碰到类似的问题了,比如:
q=c(6)
for each w in q
command
next
function c(x)
for a=1 to 100
for b=1 to 100
if a-x=0 or b-x=0 then
c=ab
end if
next
next
end function
这是一个创建了函数 c(x)的代码,c(x)是1至100中所有与6相关的数字的集合
以上代码运行出现错误:c(x) 不是一个集合对象
请问类似的集合对象要怎么创建?
我查阅了大量资料,没发现关于集合的材料,其中最相近的就是字典对象Dictionary,但是对这个对象的用法不熟悉,请高手就以上实例用代码演示一下吧?
[ Last edited by zhoushijay on 2007-5-11 at 12:44 PM ]
|
|
2007-5-11 12:27 |
|
|
ttyp
初级用户
积分 180
发帖 84
注册 2006-9-7
状态 离线
|
『第
2 楼』:
Dim d ' 创建变量。
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "Athens" ' 添加一些关键字和项目。
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
|
|
2007-5-11 12:40 |
|
|
zhoushijay
高级用户
Autowalk
积分 845
发帖 375
注册 2007-3-3
状态 离线
|
『第
3 楼』:
2楼兄弟跟教材里的一样,能把上面我写的那段代码演示一下吗?不管什么方法都可以
|
|
2007-5-11 12:42 |
|
|
ttyp
初级用户
积分 180
发帖 84
注册 2006-9-7
状态 离线
|
『第
4 楼』:
Set q=c(6)
for each w in q
msgbox q(w)
next
function c(x)
Dim d,i
Set d = CreateObject("Scripting.Dictionary")
i = 1
for a=1 to 10
for b=1 to 10
if a-x=0 or b-x=0 then
d.add i,a & ":" & b
i = i + 1
end if
next
Next
Set c = d
end function
|
|
2007-5-11 12:59 |
|
|
baomaboy
银牌会员
积分 1513
发帖 554
注册 2005-12-30
状态 离线
|
|
2007-5-11 13:13 |
|
|
zhoushijay
高级用户
Autowalk
积分 845
发帖 375
注册 2007-3-3
状态 离线
|
『第
6 楼』:
4楼高手,我有一事不明,
Set q=c(6)
for each w in q
msgbox q(w)
next
为什么这里要msgbox q(w) 而不是msgbox(w)
5楼的代码也可以,而且方法很巧妙(可惜今天分数满了不能加了),只是最后多个一个空的元素
不过我跟想学会dictionary的用法
[ Last edited by zhoushijay on 2007-5-11 at 01:22 PM ]
|
|
2007-5-11 13:21 |
|
|
baomaboy
银牌会员
积分 1513
发帖 554
注册 2005-12-30
状态 离线
|
|
2007-5-11 13:28 |
|
|
ttyp
初级用户
积分 180
发帖 84
注册 2006-9-7
状态 离线
|
『第
8 楼』:
Set q=c(6)
for each w in q
msgbox q(w)
next
这里的w是q集合里的key,q(w)是通过key访问该元素的实际内容,可以是任意的对象
|
|
2007-5-11 13:44 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
9 楼』:
想不通……直接用数组不行?还搞那么麻烦。
|
|
2007-5-11 13:51 |
|
|
zhoushijay
高级用户
Autowalk
积分 845
发帖 375
注册 2007-3-3
状态 离线
|
『第
10 楼』:
明白了,谢谢ttyp高手,
dictionary就是一个数组,而且是简化了的,直接用数组不是跟麻烦
|
|
2007-5-11 13:58 |
|
|
ttyp
初级用户
积分 180
发帖 84
注册 2006-9-7
状态 离线
|
『第
11 楼』:
和数组不一样的,数组没有exists功能啊,dictionary有key可以快速定位元素,key是字符串
|
|
2007-5-11 14:13 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
12 楼』:
直接数组就不要dictionary了……既然一样。。。干什么还搞他出来……中间你用了几次交换。。。c d q
|
|
2007-5-11 14:14 |
|
|
sonicandy
中级用户
积分 273
发帖 91
注册 2007-5-7
状态 离线
|
『第
13 楼』:
我觉得可以理解为哈希表,呵呵
类似c++的map和php中的哈希数组.
|
|
2007-5-11 22:56 |
|