Ruby入门疑问:如何使test方法返回true?
解决Ruby Hash扩展in方法的问题
要让test方法返回true,你只需要在Hash类的in方法里实现获取传入key对应哈希值的逻辑即可,具体修改如下:
修改in方法,接收传入的参数(也就是哈希的key),然后返回当前哈希实例中该key对应的值:
class Hash def in(*args) self[args.first] end end # cannot alter below this line def test { a: 1 }.in(:a) == 1 end puts "test: #{test}"
说明:
- 方法定义里的
*args是Ruby的可变参数语法,能接收任意数量的传入参数,这里我们只需要第一个参数(也就是调用时传入的:a) self代表当前的Hash实例(也就是{a:1}),通过self[args.first]就能获取到key对应的value,这里就是1- 这样调用
{a:1}.in(:a)时会返回1,test方法的判断结果就是true
你也可以更简洁地写这个方法(如果确定只会传入一个参数):
class Hash def in(key) self[key] end end
内容的提问来源于stack exchange,提问作者James Nine
相关产品推荐
相关产品推荐

