0X24词典
前置知识
正文
- Lua中表的索引除了是数字也可以是其他值。比较常用的就是用字符串作为索引。例如:
>
>L={}
>L['MyName']='Tom'
>L['YourName']='Jerry'
>print(L['MyName'],L['YourName'])
>L[true]='This is true.'
>L[print]='This is print function'
>
(除了整数和字符串以外,浮点数,函数,表,布尔值等都可以做索引.但是为了防止程序难以理解.我们一般就用数字和字符串作为索引.)
- 也可以在初始化的时候就指定索引和值的关系.用等号链接索引和值.作为索引的变量(或者字面值)要加方括号,放在对应的值和等号前:
>
>L={[2]=45,[5]="he",["a"]=true}
>
这等价于
>>L={}
>L[2]=45
>L[5]="he"
>L["a"]=true
>
官网上还介绍了自动分配数字索引和显式指定索引混用的用法.但是个人认为这回带来不必要的复杂性.因此在此不予介绍.
- 如果用作索引的字符串符合Lua中变量命名规范,也可做一些简写。表名后加英文句点然后加不带引号的字符串表示返回表中这个字符串对应的成员。例如L['hello']等价于L.hello这中写法.又如:
>
>L={}
>L.MyName='Tom'
>print(L.MyName)
>
- 在初始化时赋值,如果一个符合规范的字符串用作索引,也可以省略其方括号和引号.例如以下两个语句是等价的:
>
>L={first="Tai",last="Xuan"}
>L={["first"]="Tai",["last"]="Xuan"}
>
- 在3中提到的语法糖还有一种形式.如果索引的值正好是一个函数.那么在函数调用式中用冒号":"取代句点".",就会把表本身作为第一个参数传递给函数.例如:
>
>L={}
>L.p=print
>L:p()
>L.p("abc")
>L:p("abc")
>
- 演示: 词典和语法糖
!!!!!!!!!!!!!!!!!!!!!!<>
后续推荐