| 赞 | 427 |
| VIP | |
| 好人卡 | |
| 积分 | 423 |
| 经验 | |
| 最后登录 | 2026-10-23 |
| 在线时间 | 6020 小时 |
- 梦石
- 0
- 星屑
- 42325
- 在线时间
- 6020 小时
- 注册时间
- 2006-11-10
- 回帖
- 6974
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有账号?注册会员
×
本帖最后由 灯笼菜刀王 于 2024-6-13 17:51 编辑
起因, 碰到了个难以理解的现象, 请教下是什么原因
有个hash : h = {["字符",1,2,3,4] => [5,6,7,8]}
然后, 有个array : a = h.keys ; a.unshift(nil)
之后, 遍历 a.size.times{|j| p h[a[j]]} ; 可以正常p 出 h[["字符",1,2,3,4]] 的值
然后, 我要把 h的key里的字符替换, 其余不变, 发现貌似不能直接操作hash的key, 于是,我就曲线救了下
z = a[1] .clone ; a[1][0] = "另一字符" ; h[a[1]] = h[z] ; h.delete(z)
结果, 再次遍历 a.size.times{|j| p h[a[j]]} ; 就发现 h[a[1]] 死活返回nil, 尽管p 出来的数组 hash key index 全部符合, 但是就是不认 h[a[1]]
哪怕, 替换后, 再一次重置a ; a = h.keys ; a.unshift(nil) 之后也还是无法认出 h[a[1]] , 什么原因鸭
最后, 折腾了一下午, 把key换成字符串,不用数组了, 再用 =~ 去获取所需参数才正常.....
这里想知道 用数组当key有什么禁忌没
|
|