请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册
查看: 1853|回复: 4

forin遍历表时的一个奇怪现象

[复制链接]

7

主题

27

帖子

148

积分
交易币
5

编程一段

Rank: 2

发表于 2016-5-26 09:19:01 | 显示全部楼层 |阅读模式
看代码:
[aardio] 纯文本查看 复制代码
import console;
res = {
	help123 = "改变前面的键名,比如去掉123,下面的logo就会显示";
	logo = "为什么我不会显示呢?";
	hehe = "法克";
}

for(k,v in res){
	console.log(k,v)
	if !string.startWith(k,"aardio"){
		res["aardio-"+k] = v;
	}	
}

console.varDump(res)

console.pause(true);


运行结果:
help123 改变前面的键名,比如去掉123,下面的logo就会显示
aardio-help123  改变前面的键名,比如去掉123,下面的logo就会显示
hehe    法克
参数位置:1
数据类型:table
变量值: {
    aardio-hehe = 法克
    aardio-help123 = 改变前面的键名,比如去掉123,下面的logo就会显示
    hehe = 法克
    help123 = 改变前面的键名,比如去掉123,下面的logo就会显示
    logo = 为什么我不会显示呢?
}


请按任意键继续 ...



logo及新增加的 "aardio-hehe" 应该显示的没有显示(试下把help123 中的 123删除,或者改变一下一些键名对比下输出结果?)








回复

使用道具 举报

2

主题

118

帖子

99

积分
交易币
0

编程一段

Rank: 2

发表于 2016-5-26 20:04:57 | 显示全部楼层
perfect 发表于 2016-5-26 19:59
你一边遍历哈希表还一边插入新成员,哪个编程语言结果都会乱套。

这就好比你让老师给学生点名,学生还不老 ...

用遍历数组来描述一下你的过程,可能更容易理解:

import console;

var tab  = {1;2;3;}
for(i=1;#tab;1){
    table.insert(tab,
"插队捣乱");
    console.log(i,tab[ i ])
}

console.log(
"好奇怪,1,2,3都没显示")
console.pause(
true);

回复 支持 0 反对 1

使用道具 举报

14

主题

172

帖子

595

积分
交易币
0

编程三段

Rank: 4

发表于 2016-5-26 10:51:08 | 显示全部楼层
forin中动态改变了table数据,table数据又没有完全遍历
回复 支持 反对

使用道具 举报

2

主题

118

帖子

99

积分
交易币
0

编程一段

Rank: 2

发表于 2016-5-26 19:59:17 | 显示全部楼层
你一边遍历哈希表还一边插入新成员,哪个编程语言结果都会乱套。

这就好比你让老师给学生点名,学生还不老老实实站好了,还到处乱跑,一会少一个一会多一个还乱插队,最后你说老师点名会不会点漏了?!
回复 支持 反对

使用道具 举报

7

主题

27

帖子

148

积分
交易币
5

编程一段

Rank: 2

 楼主| 发表于 2016-5-27 11:04:31 | 显示全部楼层
perfect 发表于 2016-5-26 19:59
你一边遍历哈希表还一边插入新成员,哪个编程语言结果都会乱套。

这就好比你让老师给学生点名,学生还不老 ...

有道理!
如果需要加入新内容,就建个临时表放着,然后修改完成再mix到表中..
能帮忙看看这两个吗?
函数参数的问题-当参数值为空表,且不是最后一个参数时
http://bbs.aardio.org/forum.php? ... =736&fromuid=89
(出处: carl论坛)
console.dump方法无法显示稀疏数组
http://bbs.aardio.org/forum.php? ... =730&fromuid=89
(出处: carl论坛)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



GMT+8, 2021-4-15 00:58 , Processed in 0.091977 second(s), 26 queries .

© 2001-2011 Powered by Discuz! X3.2.

快速回复 返回顶部 返回列表