zoukankan      html  css  js  c++  java
  • ruby hash turtorial

    ruby学习系列--Hash类函数

    作者:赵献良  来源:博客园  发布时间:2008-08-28 12:06  阅读:385 次  原文链接   [收藏]  
     

    函数名称 

    说明

    示例

    ==

    判断两个Hash是否相等

    h1 = {"a" => 1, "c" => 2} 

    h2 = { "a" => 1, "c" => 2, 7 => 35 } 

    h1 == h2    » false 

    [ ]

    返回指定键值对应的对象

    h = { "a" => 100, "b" => 200 } 

    h["a"] » 100 

    h["c"] » nil 

    [ ]=

    Hash添加记录

    h = { "a" => 100, "b" => 200 } 

    h["a"] = 9 

    h["c"] = 4 

    » {"a"=>9, "b"=>200, "c"=>4} 

    clear

    清空哈希表的内容返回self.

    h = { "a" => 100, "b" => 200 }

    h.clear    » {} 

    default

    返回哈希表的默认值

    h = { "a" => 100, "b" => 200 } 

    h.default = "Go fish" 

    h["a"] » 100 

    h["z"] » "Go fish" 

    delete

    从词典中删除和键值相符的记录

    h = { "a" => 100, "b" => 200 } 

    h.delete("a")           » 100 

    h.delete("z")           » nil 

    h.delete("z") { |el| "#{el} not found" } »"z not found" 

    delete_if

    通过过程块来删除特定键值的记录

    h = { "a" => 100, "b" => 200 } 

    h.delete_if {|key, value| key >= "b" } 

    » {"a"=>100} 

    each

    Hash表的迭代操作,对表的每一个词对进行迭代操作

    h = { "a" => 100}

    h.each {|key, value| print key, " is ",value,""n"}         » a is 100

    each_key

    对表的每一个键对进行迭代操作

    h = { "a" => 100, "b" => 200 }

    h.each_key {|key| print key }     »  ab

    each_value

    针对value进行迭代操作

    h = { "a" => 100, "b" => 200 }

    h.each_value {|value| print value }

    » 100200

    empty?

    判断哈希表是否为空,空则返回true

    {}.empty?   » true

    fetch

    如果能找到键值为keyhash值,则返回Hash值;

    如果找不到,则返回默认值或指定值;

    如果默认值和指定值都找不到,抛异常

    h = { "a" => 100, "b" => 200 } 

    h.fetch("a")           » 100 

    h.fetch("z", "go fish") » "go fish" 

    h.fetch("k") 

    »in `fetch': key not found (IndexError)

    has_key?

    判断是否存在相符的key

    h = { "a" => 100, "b" => 200 } 

    h.has_key?("a") » true 

    h.has_key?("z") » false 

    key

    h. key?("z")   » false 

    include?

    h.include?("b")   » true

    has_value?

    判断是否存在相符的value

    h = { "a" => 100, "b" => 200 } 

    h.has_value?(100) » true 

    h.has_value?(999) » false 

    value?

    h.value?(100) » true 

    h.value?(999) » false 

    index

    返回给定值的键值,未找到返nil

    h = { "a" => 100, "b" => 200 } 

    h.index(200) » "b" 

    h.index(999) » nil 

    indexes

    返回一系列给定的键值对应值组成的数组

    h = { "a" =>100, "b" =>200, "c" =>300 } 

    h.indexes("a", "c")     » [100,300] 

    h.indexes("a","z")      » [100,nil] 

    indices

    h.indexes("a", "c")     » [100,300] 

    h.indexes("a", "z")   » [100,nil]

    invert

    将元素值和索引互换,返回变换后的哈希表.

    注意:若原哈希表中若干不同的索引对应相同的元素值时,其变换结果将无法预测.

    h = { "n" => 100,"m" => 100,"y" => 300} 

    h.invert   » {300=>"y",100=>"n"} 

    keys

    返回一个包含所有key的数组.

    h = { "a" => 100, "b" => 200 } 

    h.keys         » ["a", "b"] 

    values

    返回一个包含所有vakue的数组.

    h = { "a" => 100,"b" => 200,"c" => 300 } 

    h.values     » [100, 200, 300] 

    length

    返回词典中元素的个数

    h = { "d" =>100, "a"=> 200, "v" => 300} 

    h.length     » 3

    h. size        » 3

    size

    rehash

    重新计算索引对应的哈希表值。

    当与索引对应的哈希表值发生变化时,若不使用该方法来重新计算的话,将无法取出与索引对应的哈希表值。

    a = [ "a", "b" ] 

    c = [ "c", "d" ] 

    h = { a => 100, c => 300 } 

    a[0] = "z" 

    h.rehash 

    » {["z", "b"]=>100, ["c", "d"]=>300} 

    h[a] » 100 

    replace

    以另外一张Hash表的内容来替换当前Hash表的内容

    h = {"a" =>100, "b" =>200 } 

    h.replace({ "c" => 300, "d" => 400 }) 

    » {"c"=>300, "d"=>400} 

    shift

    删除一个哈希表元素后

    再以[key,value]数组的形式将其返回

    h = { 1 => "a", 2 => "b", 3 => "c" } 

    h.shift » [1, "a"] 

    » {2=>"b", 3=>"c"} 

    sort

    Hash进行排序

    按键值从小到大排序

    h = { "b" => 30, "a" => 20, "c" => 10 } 

    h.sort » [["a", 20], ["b", 30], ["c", 10]] 

    h.sort {|a,b| a[1]<=>b[1]} 

    » [["c", 10], ["a", 20], ["b", 30]] 

    to_a

    Hash表转换为数组

    数组按Hash表的键值从小到大排序

    h = {"c" =>300,"a" =>100,"d" =>400} 

    »  [["a", 100], ["c", 300], ["d", 400]]

    to_s

    Hash表转换为字符串

    h = { "c" => 300, "a" => 100, "d" => 400} 

    h.to_s     » "a100c300d400" 

    update

    用一张Hash表去更新另外张Hash

    h1 = { "a" => 100, "b" => 200 } 

    h2 = { "b" => 254, "c" => 300 } 

    h1.update(h2) 

    » {"a"=>100, "b"=>254, "c"=>300} 


  • 相关阅读:
    cookie,请求报文,
    ser,ver
    关于 通知的 死循环,
    这读取的好蛋疼,为什么一写 一读就有问题了,不一致了,
    缓存小姐 挡拆,网络请求 不同步 惹的祸,
    viewdidload ,viewwillappear,
    提示输入 用户名 ,密码,--》转
    前端面试
    npm与cnpm
    vue与node和npm关系
  • 原文地址:https://www.cnblogs.com/lexus/p/1881442.html
Copyright © 2011-2022 走看看