楼主 kevinchengcw |
自从学会了字典,觉得处理很多以前觉得很复杂的问题都得心应手,这么好的东西实在想奉献给大家,只好硬着头皮为大家写一篇讲解的文章,在这里不会过多利用专业词汇来解释,我会尽量用一些你能想像得出的情景来说明,其中的各种理解纯属个人见解,并未翻阅什么资料,如有纰漏望不吝指出。 下面开始: 我们先不说什么是字典,因为只要你懂得用法,你即使不知道什么是字典也没关系(其实是我自己也说不明白,嘿嘿!),我要说的是,你要想学会使用字典先要学会当老板,不相信,告诉你,这真的很重要,为什么,我们下面来讲。 老板不会干啥高难度的活,不过搬搬抬抬的经验丰富,就弄个物流方面的公司吧,要当老板你要先注册个公司吧,公司可有各种名称的后缀,什么有限公司啦,责任公司啦,多了去了,同样,想使用字典也需要定义吧,不过不管他是什么公司,总得有个自己的公司名吧,先不去管后缀,当老板就要自己说得算,决定了,公司名就起字典Dictionary的简写Dic,当然,你当老板你说得算,你可以起个你喜欢的名字(我喜欢用Dic)。 决定了公司名,我们就去注册一下公司名吧,用之前先来个: Dim Dic 或者 Dim Dic as Object 这样你就拥有了自己的公司了,这里你可以想像dim就是注册,dic就是公司名,as object就是说明公司性质(后缀名),至于object是什么性质的公司我们就不管了,老板没读太多书,只要知道公司能申请下来就行了。 现在公司名有了,我们得有个办公地点吧,老板有钱,盖个办公大楼吧,有钱就是好办事,一句话就搞定了: Set Dic=CreateObject("scripting.dictionary") 这样就盖起了一座大楼(创建了一个字典项目),什么,你问老板为啥要这样盖楼,老板不会盖楼,只会出钱,然后自然有人帮着盖。而且老板就是有钱,这楼盖的这个大哟,你问有多大,你有多大块空地就盖多大个楼(据说字典容量的大小只与你空闲的内存空间大小有关)。 公司也注册了,办公楼也建好了,老板琢磨着,嗯,该招人了。 "那个啥,秘书,帮我贴几条规定在墙上,我的地盘我做主,我就是皇上: 1. 今后公司人员录用我一句话就决定; 2. 凡进我公司的人员都得服从公司的规定,名字由老板定,不能与别人重名,而且要随叫随到,这样才能有效率; 3. 公司的每个员工各有一个保管区域Dic(员工名),随货品不同可任意放置,但要能随时提取; 4. 我们公司要成为最有效率的公司,如果我这个老板觉得这名员工不需要了,一句话就开除; 5. 我这个老板有权在必要的时候开除全部员工或解散公司。 弄大点的字,贴门口!" 招聘、查询、开除与解散的办理手续如下: 招聘: Dic.add 人员名,责任区 查询: Dic.exists(人员名) 开除: Dic.remove 人员名 解散公司: Dic.removeall 老板想想,要有活了才招聘人员,这样不浪费人力成本,终于接了个活,有个公司到了一批货,让老板在接货的时候去掉重复的项目,老板想这事简单,我们公司人名都是唯一的,就让每个员工的名字与货品名一样,我们公司又不允许有重名的情况,这样不就解决了吗,于是在提货时现场招聘,看到一样货,老板就叫一声自己的员工,如果有人答应就说明已经有了,如果没人答应,老板就从现场现聘一个人员,并将其命名为新货品的名字: 老板一般说 "张三在吗?"if dic.exists("张三") 或者 "没有叫张三的吧?"if not dic.exists("张三") "没有叫张三的,那你过来吧,聘你了,你现在叫张三,在公司先顶个空缺!" If not dic.exists("张三") then dic.add "张三","" 如此,将所有的重复的全去除了。老板很开心,第一单做的漂亮,兴冲冲的去交货,没想到对方又提出了新要求:"我们要付对方货款,这个是要计件的,你把刚刚那些货的实际件数计一下顺便给我们吧!",老板一想,这个也行,我们公司的员工随叫随到,于是老板守着货品一个一个的叫:"张三,一件;李四,两件……",于是张三,李四把各自保管的物品数量加了个一: Dic("张三")=Dic("张三")+1 Dic("李四")=Dic("李四")+2 …… 全弄完了,老板要去报告数量去了,不过叫货品名称没问题,这个全部员工的名字都叫啥我也记不住啊,这个得请我那个数组兄弟帮个忙了。 话说这个数组兄弟是更早就开公司的,擅长的就是这种统计,对了,数组兄弟注册的公司叫Arr(Array的缩写,如果要用到时可以与dic公司一同注册,也不用写明公司性质和公司规模,你要不喜欢,给他起个别的名也行啊),现在把所有员工的名字报上去吧,问个智力题先:话说一个员工是key,那一群员工叫啥,keys?!不错不错,英文学得不错,知道加上s代表复数哈,现在就把员工名单报给Arr公司,让他们帮着搞一下吧: Arr=Dic.keys Arr公司的工作方式的循环的来,从第一个人到最后一个人或从最后一个人到第一个人都行,不过我习惯从低到高,先申请个号码牌(注意,做事要有条理,事先考虑到要用到的在申请区全申请完,像我就提前申请了个号码牌: Dim N as Integer) For N=LBound(Arr) To UBound(Arr) Msgbox "货品名是" & Arr(N) & " 的货品数量是:" & Dic(Arr(N)) Next N 这样就一个个的列出了各种货品的数量。 谁知对方公司又提出了新要求:"我们公司仓库小,你把数量小于3的货品给我们就行了!" 于是老板又数一次,多于3的员工就开除掉吧: For N=LBound(Arr) To UBound(Arr) If Dic(Arr(N))>3 then Dic.remove Arr(N) ‘老板有规定的嘛,不需要时一句话就开除! Next N 终于交完了差,老板想了想,这回都不需要了,直接全开吧: Dic.removeall ‘呵呵,终于用上了 老板又想,做这行还真不容易,反正也没其他事了,连楼也拆了吧,免得占着位置: Set Dic=Nothing "其实即使不解散公司,只要拆楼公司也就解散了!"老板这样想着。 回想公司的各项工作,老板觉得这次开的公司有下面这几个方面做得不错: 1. 员工名唯一而且随叫随到(不用像数组兄弟的公司一样,要循环到了才出现),这样在去除重复及运作效率上快很多; 2. 我们公司仓库够牛,不计较数据类型及大小,基本都能存放进对应员工的责任区里,有海纳百川的气魄,而且可以即时提取; 3. 人员进出及公司存亡一句话,**也有**的好处,够灵活嘛,嘿嘿! 怎么样,各位,是不是看到了一个高效却短命的公司从建立到终结的过程,你想不想过一把当老板的瘾呢,马上开始学习字典吧,真的好用。 看一看能不能让你通俗的理解字典的各项用法及功能.rar |
2楼 xiangzi728 |
谢谢kevinchengcw 分享这么好的学习资料! |
3楼 xiangzi728 |
看了半天没看懂! |
4楼 chlypy2008 |
解释的够生动,谢谢分享! |
5楼 liuguansky |
看了半天没看懂! |
6楼 acecrazy |
文采非常滴好,看明白了,不会用,练手去 |
7楼 zm0115 |
K 哥狠啊 讲完课了把楼都拆了 |
8楼 cunfu |
有劳 |
9楼 yd0209 |
先做一个常识性了解,今后咱先盖安居房 |
10楼 大海情怀 |
学习 |
11楼 Ericall |
谢谢,学习了 |
12楼 人性殿堂 |
版版精采 贴贴经典! |
13楼 Cor_Scorpii |
生动有趣,笑着就把知识学会了。这个老板真霸气 |
14楼 我的1314 |
K 哥狠啊 讲完课了把楼都拆了 |
15楼 q6co |
配上实例就更完美了 |
16楼 E林好汉 |
短、平、快,高效。 |
17楼 吾股丰登 |
这个通俗的例子很不错 通俗易懂 |
18楼 兴魏 |
看了半天没看懂 |
19楼 DJ_Soo |
根据我个人理解,这样解释感觉不大能看得懂啊.. 我觉得还是拿字典和字义来解释更容易明白.整个过程就相当于字典出书的整理过程一样.. |
20楼 LOGO |
没想到K哥的文笔这么好。 看完以后很有收获,谢谢K哥的分享! |
21楼 我的1314 |
没想到K哥的文笔这么好。 |
22楼 hustclm |
字典和数组的组合应用,看懂了 |
23楼 gaokaozhu |
下来慢慢学 |
24楼 sosomc |
写得挺好玩,抱走学习。 |