如何通过Test对象的key访问哈希值?解决NoMethodError异常
正确访问哈希值的方法
嘿,这个问题我太熟了,其实是Ruby的语法解析逻辑在搞鬼!
错误原因分析
你写的hash[:Test.key]之所以报错,是因为Ruby会把:Test当成一个单独的符号,然后尝试调用这个符号的key方法——但符号类根本没有key这个方法,自然就抛出了NoMethodError。简单说,你想让Ruby先执行Test.key拿到键值,再用这个值去查哈希,但你的写法让Ruby理解成了“取符号:Test的key方法返回值,再用这个值当键”,完全搞反了顺序。
正确写法
直接把Test.key放进哈希的方括号里就行,不用加冒号:
hash[Test.key]
这样Ruby会先执行Test.key获取到你需要的键值,再用这个值去哈希中查找对应的内容,完美符合你的需求。
举个实际例子帮你理解:
假设你的Test对象的key方法返回:activity,哈希是my_hash = { activity: "coding", time: "afternoon" },那么my_hash[Test.key]就会返回"coding",完全正确。
内容的提问来源于stack exchange,提问作者jose1221
相关产品推荐
相关产品推荐

