class CodeHash

用一致化方法根据key查值或反查,使用hash方法([]),如

code_hash = CodeHash.new({'普通会员'=>0, '高级会员'=>10})
code_hash['普通会员']  #=>0
dode_hash[0]           #=>'普通会员'

相关概念:

key:  人可识别的编码,如‘普通会员’
value: 存入数据库的编码,一般为增加数据检索速度

规则:

* 键/值具有唯一性(符合大部分使用情况)
* 字符串键统一用字符串访问,而非符号,如code_hash['a'], not code_hash[:a] (因为很多键为汉字)

Attributes

data[RW]
invert_data[RW]

Public Class Methods

new(code_hash={}) click to toggle source
# File lib/ns_service_pack/code_hash.rb, line 19
def initialize(code_hash={})
  @data = code_hash
  @invert_data = code_hash.invert
end

Public Instance Methods

[](code) click to toggle source
# File lib/ns_service_pack/code_hash.rb, line 24
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
all() click to toggle source
# File lib/ns_service_pack/code_hash.rb, line 36
def all
  @data.merge(@invert_data)
end
keys() click to toggle source
# File lib/ns_service_pack/code_hash.rb, line 40
def keys
  @data.keys
end
values() click to toggle source
# File lib/ns_service_pack/code_hash.rb, line 44
def values
  @data.values
end