#coding: utf-8 =begin 用一致化方法根据key查值或反查,使用hash方法([]),如 code_hash = CodeHash.new({'普通会员'=>0, '高级会员'=>10}) code_hash['普通会员'] #=>0 dode_hash[0] #=>'普通会员' 相关概念: key: 人可识别的编码,如‘普通会员’ value: 存入数据库的编码,一般为增加数据检索速度 规则: * 键/值具有唯一性(符合大部分使用情况) * 字符串键统一用字符串访问,而非符号,如code_hash['a'], not code_hash[:a] (因为很多键为汉字) =end class CodeHash attr_accessor :data, :invert_data def initialize(code_hash={}) @data = code_hash @invert_data = code_hash.invert end def [](code) #Fix a bug on 20111115 #@data[code] || @invert_data[code]||"真的没找到呀![code=#{code.to_s}]" if @data.key?(code) @data[code] elsif @invert_data.key?(code) @invert_data[code] else "注意:没找到对应键[#{code.to_s}]的值!" end end def all @data.merge(@invert_data) end def keys @data.keys end def values @data.values end end