• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[郭立员] [安卓按键]用“键值对”来存储数据 [复制链接]

1#
键值对在按键里面并没有专门的介绍,在别的编程语言里面存储键值对的容器会叫它字典,属于数组的范畴,我们这期文章姑且也叫它字典。
键值对的构成是键名(key)以及索引的对象键值(value),将多个键值对放入到大括号{}中就形成字典,如下所示:

  1. Dim dict={
  2. "name" : "小明",
  3. "age" : 7,
  4. "class" : "一年级"
  5. }
复制代码

注:为了看着方便,这里代码做了分行处理,并不能直接运行,实际使用时这是一行代码或者在分行处用续行符(_)连接。


要访问字典的成员,可以使用键索引,如下所示:
  1. TracePrint dict["name"]
复制代码
通过索引就可以得到“name”对应键值“小明”。

关于命名是键名key的规则:
可以字符串,如上面的例子,也可以是字符串类型的数字
  1. Dim dict={"1":"小明"}
复制代码
也可以是变量:
  1. Dim a="name"
  2. Dim dict={a:"小明"}
  3. TracePrint dict[a]
复制代码
修改索引对象的值,比如修改小明的年龄(age)为8,那么可以这样写:
  1. dict["age"]=8
复制代码
在字典中插入新的键值对,如下所示:
  1. dict["like"]="踢球"
复制代码
删除键值对的操作,目前在按键精灵中并没有看到,暂时空着。。。

创建空的字典有3种方式:
  1. Dim dict()
  2. Dim dict=array()
  3. Dim dict={null}
复制代码
后2种方式也是可以清空字典里面的内容。

遍历字典里面的全部键值对:
  1. Dim dict={"name":"小明","age":7,"class":"一年级"}
  2. For Each k , v In dict
  3. TracePrint k,v
  4. Next
复制代码
k是key简称对应的是键值,v是value的简称对应的是索引值
重复运行遍历字典的操作,会发现每次运行结果的顺序是不一样的,即下面这3条是随机排序的,也就是说字典的内容是无序数据。
  1. 当前脚本第3行:age 7
  2. 当前脚本第3行:name 小明
  3. 当前脚本第3行:class 一年级
复制代码
输出字典里面的全部内容,在数组中是可以用join命令合并数组然后输出,如下所示:
  1. Dim arr=array(1,2,3)
  2. TracePrint join(arr,",")
复制代码
输出结果:
  1. 当前脚本第2行:1,2,3
复制代码
但是join命令对字典无效,输出为空值,想要输出字典的全部内容,需要用table转json命令,然后输出。
  1. Dim dict={"name":"小明","age":7,"class":"一年级"}
  2. Dim json=encode.TableToJson(dict)
  3. TracePrint json
复制代码
输出结果:
  1. 当前脚本第3行:{"age":7,"class":"一年级","name":"小明"}
复制代码
获取字典有多少个键值对,测试用UBuound或者len命令都不行,那么换一个思维,每一个键值对之间是用逗号分隔的,先转json,当做普通的字符串,用逗号分隔得到新的数组,然后获取数组最大下标,就可以知道键值对的个数了,这个方式虽然绕了点,但是也可以实现。


为了方式键值中含有逗号,也可以用逗号+引号作为分割符,增加精准度。

以上介绍的内容都是一维的字典,实际应用时可能会是多维的字典,如下:
  1. Dim table={"success":200,"data":{"code":"验证码是1646"}}
  2. TracePrint table["data"]["code"]
复制代码
输出结果:
  1. 当前脚本第2行:验证码是1646
复制代码
所谓多维字典就是键值对的索引对象依然是字典。
  1. {
  2. "success": 200,
  3. "data": {
  4. "code": "验证码是1646"
  5. }
  6. }
复制代码
即data的键值是{"code":"验证码是1646"}

关于字典的多维的维数是没有限制的,理论上是可以无穷的。

实际应用的例子:
在游戏中记录账号的数据:
  1. {
  2. "名称": "小A",
  3. "等级": "5",
  4. "经验": 80,
  5. "金币": "5000"
  6. }
复制代码
通过这个字典可以记录账号的数据,当数据发生变化以后也可以修改,如等级由5级变成6级,可以这样写。
  1. Dim 账号={"名称":"小A","等级":"5","经验":80,"金币":"5000"}
  2. 账号["等级"] = 账号["等级"] + 1
  3. TracePrint 账号["等级"]
复制代码
输出结果:
  1. 当前脚本第3行:6
复制代码
新的字典数据就变成了:
  1. {"名称":"小A","等级":6,"经验":80,"金币":"5000"}
复制代码
字典存储数据适合于多个无序数据的存储,方便调用及修改。

最后编辑郭立员 最后编辑于 2022-02-08 10:06:59
扫码免费获取我的基础教程【视频教程】
扫码下方二维码关注我的公众号:3分钟学堂

QQ交流群:936858410
发新话题 回复该主题