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]
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   

Ruby  Hash类的更多相关文章

  1. Ruby Hash与ActiveSupport’s HashWithIndifferentAccess对于key的区别

    Ruby Hash的key定义的时候是支持symbol或者string的,所以访问的时候只能是symbol或者string其中一种方式. 建议使用symbol定义Hash的key,因为symbol在R ...

  2. ruby hash 默认值的问题

    参考:http://stackoverflow.com/questions/16159370/ruby-hash-default-value-behavior 使用ruby hash 默认值为空数组, ...

  3. 雷林鹏分享:Ruby Dir 类和方法

    Ruby Dir 类和方法 Dir 是一个表示用于给出操作系统中目录中的文件名的目录流.Dir 类也拥有与目录相关的操作,比如通配符文件名匹配.改变工作目录等. 类方法 序号方法 & 描述 1 ...

  4. 雷林鹏分享:Ruby File 类和方法

    Ruby File 类和方法 File 表示一个连接到普通文件的 stdio 对象.open 为普通文件返回该类的一个实例. 类方法 序号方法 & 描述 1File::atime( path) ...

  5. Ruby on Rails Tutorial 第四章 Rails背后的Ruby 之 类

    Ruby和其他面向对象的语言一样,使用类来组织方法,然后实例化类,创建对象.1.构造方法使用双引号是字符串的字面构造方法,也可以使用“具名构造方法”,即在类名上调用new方法 >> s=& ...

  6. objective-c中类似ruby枚举类的实例方法

    虽然obj-c的语法格式略显繁琐,但它和ruby都从某些方面继承了smalltalk的某些动态的东西.这些东西是 C和C++之类的静态语言所不曾有的. 比如ruby中可以将一个类或对象的所有方法枚举出 ...

  7. ruby URI类

    一. URI require 'uri' uri = URI("http://foo.com/posts?id=30&limit=5#time=1305298413") # ...

  8. Ruby  String类

    String类 更新: 2017/06/10 更新: 2017/06/23 puts()要空格可以直接不加参数 更新: 2017/08/17 增加rails引入的titleize 更新: 2017/1 ...

  9. RUBY的类封装,继承,多态简单演示

    class Person def initialize(name,age=18) @name=name @age=age @motherland="China" end def t ...

随机推荐

  1. 集群架构和CentOS7安装RabbitMQ集群(单机版)

    1. 集群架构 1.1 四种内部元数据 队列元数据.交换器元数据.绑定元数据.vhost元数据. 单一节点中:会将数据存储到内存,同时将持久化元数据保存到硬盘. 集群中: 存储到磁盘上.内存中. 集群 ...

  2. Java并发包——线程安全的Collection相关类

    Java并发包——线程安全的Collection相关类 摘要:本文主要学习了Java并发包下线程安全的Collection相关的类. 部分内容来自以下博客: https://www.cnblogs.c ...

  3. MySQL查询在一个表而不在另一个表中的数据

    1.使用not in,容易理解,效率低 select distinct A.ID from A where A.ID not in (select ID from B) 2.使用left join.. ...

  4. Java 8 中的 java.util.Optional

    Java 8 中的 java.util.Optional 学习了:https://blog.csdn.net/sun_promise/article/details/51362838 package ...

  5. 机器学习技法总结(五)Adaptive Boosting, AdaBoost-Stump,决策树

    上一讲主要利用不同模型计算出来的g.採用aggregation来实现更好的g.假设还没有做出来g.我们能够採用bootstrap的方法来做出一系列的"diversity"的data ...

  6. Python筛选法(算出十亿之内所有的质数之和)

    其实别人写的挺好的了....直接上链接吧http://blog.csdn.net/power721/article/details/8216619

  7. I2S简单学习

    以下只是个人看法,有不妥之处,请批评指出. 参考资料:http://blog.csdn.net/ce123_zhouwei/article/details/6919954: 一.I2S接口简述 I²S ...

  8. UIButton的图片和文字相对位置调整

    通常.假设直接设置UIButton的图片和文字,默认的两者相对位置可能不是我们想要的,那么须要进行调整. 须要用到的函数例如以下: UIEdgeInsetsMake(CGFloat top, CGFl ...

  9. C语言变长数组data[0]总结

    C语言变长数组data[0] 1.前言 今天在看代码中遇到一个结构中包含char data[0],第一次见到时感觉很奇怪,数组的长度怎么可以为零呢?于是上网搜索一下这样的用法的目的,发现在linux内 ...

  10. 在CentOS上把MySQL从5.5升级到5.6

    在CentOS上把MySQL从5.5升级到5.6 摘要:本文记录了在CentOS 6.3上,把MySQL从5.5.28升级到5.6.19的过程. 1. 概述 在我做的一个项目中,最近我对生产服务器上的 ...