加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 灯笼菜刀王 于 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有什么禁忌没
|