上一篇 | 下一篇

表操作指南

发布: 2007-1-25 16:27 | 作者: alphachi | 来源: aougu.net | 查看: 127次

一、表的基本结构
i-X1_"X T bB0E V'Q 奥古多媒体Xnmo$?,B V0c
1. 线性表(Linear List):[aValue1, aValue2, aValue3, ...]
i&xi2Kh$h 2. 属性表(Property List):[propName1: aValue1, propName2: aValue2, propName3: aValue3, ...]奥古多媒体IjU p.}B.A0bZ-|
3. 线性表和属性表:[item1, item2, item3, ...],其中线性表的每一个item只有一个部分aValue,而属性表的每一个item有两个部分propName和aValue。另外,我们经常用index来指代item在表中的位置,例如item1在表中的index值即为1。奥古多媒体9T4o+wxT

+|/j+{,]!~Qg:a 奥古多媒体$@9Xtz-v/q`"@2bCJ
奥古多媒体,Kz3]JE,L[

2|-i%j V3G^n x5]R 二、基本表命令一览
,A:j/Z'y s~3nL.V+f;v
cc%Ev&R Linear List and Property List
D L s0ak6R
0W B*q,whM,C3rb5Y'?M'S 01. getAt():由index获取相应的aValue。
D6wb;` zc4c8@ shc 语法:getAt(myList, index)或myList.getAt(index)奥古多媒体lT'L7j R{/E([ s
奥古多媒体)J q]L;e*Zc Z4y*[
02. getLast():获取最后一项的aValue。
"aZeo | qw}1jY g 语法:getLast(myList)或myList.getLast()奥古多媒体/^1[,A0E!{U??)t{Nua
奥古多媒体(FM Ak7dvC`
03. getOne():对于线性表,由aValue获取相应的index;对于属性表,由aValue获取相应的propName。
5aU f't0^'{E2Y 语法:getOne(myList, aValue)或myList.getOne(aValue)奥古多媒体cO,eE yz
[注] 若给出的aValue不存在则返回0。奥古多媒体f'O3qJ:vHdkM

p!NLI@d 04. getPos():由aValue获取相应的index。奥古多媒体2Y]XI.r.@GL$I
语法:getPos(myList, aValue)或myList.getPos(aValue)
i4?0f C'pr'as [注] 若给出的aValue不存在则返回0。
p iy L7K7@i[J Q
m Yq4U$KS 05. setAt:设定相应index处的aValue。奥古多媒体P'{gD"r
语法:setAt myList, index, aValue或myList.setAt(index, aValue)
q n4f%Ev7O!o hF2} [注] 当给出的index超出myList的范围时:对于线性表会被加长(自动给没有定义的项插入0);对于属性表会报错。
8?7A)d;I7v:_ Y-H2i
R X'Y+j(P-fD M 06. deleteAt:删除相应index处的item。奥古多媒体KL!Bl'Q8}t]\
语法:deleteAt myList, index或myList.deleteAt(index)
2Ssq2w7H0~uR%E [注] 若给出的index不存在则报错。
-`y9s|B B*P#ZJ 奥古多媒体(TL^2f dA
07. deleteOne:删除相应aValue处的item。
(D:[{ci#c\5qU 语法:deleteOne myList, aValue或myList.deleteOne(aValue)
r.usS5q(K7N [注] 若存在若干相同aValue的item,则删除第一个。
|4dm*a ?!QB.hsD
,E6t h-B.y,y"k i 08. findPos():返回相应aVaule(线性表)或propName(属性表)的index。
i AX"W3Y 语法:findPos(myList, aValue/propName)或myList.findPos(aValue/propName)
5e7[!T#q(e [注] 若给出的aValue/propName不存在,则对于线性表返回0,对于属性表返回<Void>。
n#?*kG;v+|#O(Q
}#I9kjh t 09. findPosNear():返回相应aValue(线性表)或propName(属性表)被排进表后的index。奥古多媒体 fR(L g L;ac,Xa
语法:findPosNear(myList, aValue/propName)或myList.findPosNear(aValue/propName)奥古多媒体{S:r:V5@X+i w
[注] 使用findPosNear()前必须先对myList排序。否则对于线性表返回0,对于属性表返回最后一个item的index。奥古多媒体 L)z#^ X0w0?uA
奥古多媒体%Y S)l,O)U6`wz-r
10. deleteProp:删除相应index(线性表)或propName(属性表)处的item。
D@i3WDR 语法:deleteProp myList, index/propName或myList.deleteProp(index/propName)
8F3P9gV Vb7OPS/M'A [注] 若给出的index/propName不存在则报错。奥古多媒体x6]5F2cNP`mK

3NosUW*o'B 11. deleteAll:不改变表的类型,删除其中所有item。奥古多媒体Q U1|Mt~
语法:deleteAll myList或myList.deleteAll()奥古多媒体du Hwk]G

j~|Cdw7hu Only Linear List
S+e [oBgK(aM\9_ 奥古多媒体,[LvF(Upu5K;b9G6n
01. addAt:在相应index处插入aValue。奥古多媒体r2K D T$OuU$d&s.Y
语法:addAt myList, index, aValue或myList.addAt(index, aValue)
j @/B1j-p?6pE [注] 当给出的index超出myList的范围时表会被加长(自动给没有定义的项插入0)
,b/k-T@ J-A(pG 奥古多媒体3C D*}2|2f E%|k ^
02. add:将aValue添加到表末。
8@-y0a3` XfHY 语法:add myList, aValue或myList.add(aValue)奥古多媒体x7?*VessM;{
[注]:若myList有序则aValue添加时被自动排序。
mb N B(xD`
uZ7N})aj8y*_Y 03. append:即使myList有序,也将aValue添加到表末。奥古多媒体u:sZ+m^p9rl
语法:append myList, aValue或myList.append(aValue)
W*c%IoD&m{X Zp
e e+]OFGe Only Property List
@4Ew1yvR 奥古多媒体q_x)|}0_/R%ez#p!B
01. getProp():由propName获取相应的aValue。
9O_-H6`,SB"Ll&S8_2M*M` 语法:getProp(myList, propName)或myList.getProp(propName)奥古多媒体#I T-m$sN$T$D
[注] 若给出的propName不存在则报错。奥古多媒体V Q}E%y w

*q2DC,zi&Ly1H 02. getAProp():由propName获取相应的aValue。奥古多媒体:j(k,_p x(F$eU
语法:getAProp(myList, propName)或myList.getAProp(propName)奥古多媒体 P%ecT'xu
[注] 若给出的propName不存在则返回<Void>。奥古多媒体7f3C]6^~ZE$T

'w0k5rgc4VDD'F 03. getPropAt():由index获取相应的propName。奥古多媒体RS3e uh!be3U
语法:getPropAt(myList, index)或myList.getPropAt(index)
a1nG)g}QT4jj4`k [注] 若给出的index不存在则报错。奥古多媒体!ze4e:y-I4i

rVHzG 04. setProp:设定相应propName处的aValue。
_D;?xRkX 语法:setProp myList, propName, aValue或myList.setProp(propName, aValue)
i J Ejtrhb[ [注] 若给出的propName不存在则报错。
J,zH/] RY3n\.fL
SV NG1\0b?@"h 05. setAProp:设定相应propName处的aValue。奥古多媒体J,Q&ub3s:[ {j*]4v
语法:setAProp myList, propName, aValue或myList.setAProp(propName, aValue)
+F$y? Ts"T N;s [注] 若给出的propName不存在则将其自动添加。奥古多媒体}&xZ4u|9?
奥古多媒体.s0b+i"|bhkP"k
06. addProp:根据给出的propName和aValue添加相应的item(允许存在若干相同propName的item)。
H.e3T {2Xp;g G 语法:addProp myList, propName, aValue或myList.addProp(propName, aValue)
0RA2B XWt [注] 若myList有序则item添加时被自动排序。奥古多媒体n-\PP0E"x

0KD-zcIi8o4b 三、使用技巧
e/~HLzR 奥古多媒体l0I$T3q9a7B'F0^ ]
1. 有关“get”的命令均为函数,所以必须添加“()”。
vT ] G?G&W"T1^ 2. 一般情况下,关键字“At”根据index对表进行操作,关键字“Prop”根据propName对表进行操作,关键字“One”和“Pos”根据aValue对表进行操作。奥古多媒体`8E \E6\|j B@
3. 除根据aValue对表进行操作的命令外,其他的命令在传递的参数不存在时一般均会报错。奥古多媒体'Y.p'S)v2O ?8K
4. 虽然属性列表中的propName和avalue对数字(integer&float)、字符串(string)和符号(symbol)类型的数据都有着很好的支持,但如果没有特殊的要求,就应该坚持
9B9a1hsK B V 使用symbol作为propName。原因在于:奥古多媒体D0b*eI(sE
1) symbol运行速度快;奥古多媒体f/q1L x0@ d@#sZ1S[
2) 其他数据类型作为propName时不一定能被表命令支持。例如不使用symbol,下面的操作无法进行:
$VX"d*p@OJ myList = [#name: “alphachi”, #from: “China”]奥古多媒体(j[,{R/\!t*t
put name of myList奥古多媒体oe?;X x!G
-- “alphachi”奥古多媒体zuG^A/SZ
put myList.from奥古多媒体!|%[9m;l/n
-- “China”奥古多媒体y2V"]:H#hR4v
也就是说,只有符号支持属性语法和圆点语法。
k(iQmD8V0M+wH;KpS#L 奥古多媒体bCm {~

X!BlA{ 四、补充说明
ci1bp4Q[;kf
8R.Z2}&K6L7v Z 有时利用表操作符“[]”会更方便,利用它可以实现基本的获取和设置功能。
0~O.I$Vwp 奥古多媒体/R(y&H~@IY
1. 线性表:奥古多媒体d2Kk0eu
获取:类似“put myList[index]”的命令能够获取值,但index不存在时会报错。奥古多媒体 o:B9l ]N(E;qJ*Kf6z;{
设置:类似“myList[index] =”的命令能够像setAt命令一样设置值。奥古多媒体wxD6OL9r l
2. 属性表:奥古多媒体 b/N3[SB$U z K1f bl
获取:类似“put myList[index/propName]”的命令能够获取值,但index不存在时会报错,propName不存在时返回<Void>。
M'N C&s x_1u 设置:类似“myList[propName] =”的命令能够像setAProp命令一样设置值。
奥古多媒体]:Q8V2Q4hZUM

6Yi9W.g%?,w!GC(I:f 相关讨论奥古多媒体U ],t QD p.s
奥古多媒体'N U1P5p7L(`#C}
相关下载:1 2

字号: | 推荐给好友

 

评分:0

我来说两句

seccode