Ruby  Hash类

Hash类

更新:2017/06/15 获取没有的哈希值时返回nil
更新:2018/01/03 增加merge!
更新: 2018/04/05 增加搜索 key
更新: 2018/04/30 增加except, except!
 
 生成  a = {"one" => 1, "two" => 2}
 a = {one: 11, two: 22}
 a = Hash.new()
注: Hash.new生成不带键值
     键为“not_key"
 设定与读取值
 a[key] = value  
 a.store(key, value)
 保存值 
 a[key]  
 a[:symbol]  
 a.fetch(key)
 a.fetch(key, default)
 获取值
 注意: fetch不存在的值会报错
          对策:设定默认值
          sample[...] 获取没有的哈希值时返回nil
 遍历取值  
整体  for temp in a.each {...}
 a.each {|temp| ...}
 键  for temp in a.each_key {...}
 a.each_key {|temp| ...}
 值  for temp in a.each_value {...}
 a.each_value {|temp| ...}
 读值不报错方法  
 设置全体默认值  Hash.new(val)
 分别设置  Hash.new() do {|temp|}
 也可以 |key, value|
 抓取时设置默认值  a.fetch(val, default)
 检验是否包含键  h.key?(key)
 h.has_key?(key)
 h.include?(key)
 h.member?(key)
注:返回bool
 检验是否包含值  h.value?(value)
 h.has_value?(value)
 搜索指定值的索引

 key(val) -> object

 注意: 虽然有index方法,但是对于hash已经废弃。使用会出警告。

         index方法和key方法一样

 大小  h.length
 h.size
 删除键  h.delete(key)
 Rails扩张的删除

 except, except!

 返回删除后剩余的, 带!的改变自身

 满足条件删除   h.delete_if{ |key, val| ... }
 h.reject! { |key, val| ... }
 清空(初始化)   h.clear() 
 合并  h1.merge(h2)
    例: {a: 1}.merge({b: 2})
 h1.merge!(h2)
 哈希嵌套  h = {a: {b: 1}}
 h[:a][:b]
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   

 

posted @ 2017-05-19 16:49  懒虫哥哥  阅读(421)  评论(0编辑  收藏  举报