Ruby:我如何使用Hash获取多个键?
我正在使用5个字符串(协议,源IP和端口,目标IP和端口)并使用它们在散列中存储一些值.问题是如果IP或端口在源和目标之间切换,则密钥应该是相同的.
如果我在C#/ Java中这样做,无论我需要创建一个新类并覆盖hashcode()/ equals()方法,但这似乎容易出错,因为我已经读过它了,我很想知道如果在这里有更好的选择. 解决方法
我正在直接复制Programming
Ruby 1.9中的一段:
因此,您可以生成哈希,如[“#{source_ip}#{source_port}”,“#{dest_ip}#{dest_port}”,protocol.to_s] .sort.join.hash,以便结果相同时切换源和目标. 例如: source_ip = "1.2.3.4" source_port = 1234 dest_ip = "5.6.7.8" dest_port = 5678 protocol = "http" def make_hash(s_ip,s_port,d_ip,d_port,proto) ["#{s_ip} #{s_port}","#{d_ip} #{d_port}",proto.to_s].sort.join.hash end puts make_hash(source_ip,source_port,dest_ip,dest_port,protocol) puts make_hash(dest_ip,source_ip,protocol) 即使两个调用之间的参数顺序不同,这也会输出相同的哈希值.将此功能正确地封装到类中是留给读者的练习. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |