ruby学习之Hash

定义

hsh=Hash.new

hsh=Hash[1=>”a”,2=>”b”]

hsh={“1”=>”a”,2=>”b”}

支持任意对象为key,习惯使用Symbol

二、常用方法

#!/usr/bin/ruby
def printResult(args)
    print args
    puts ""
end
hsh={:a=>"hello",:b=>"world"}
puts hsh
# hsh.clear()
# puts hsh
hsh.delete(:a)
puts hsh
hsh[:c]="third"
puts hsh
hsh.delete_if(){|key,value| value=="third"}
puts hsh
puts hsh.has_key?(:b)
puts hsh.has_value?("world")
puts hsh.invert()
hsh[:d]="ddd"
hsh[:e]="eee"
printResult hsh.keys()
printResult hsh.values
printResult hsh.values_at(:b,:d)
puts hsh.length()
puts hsh.merge({:b=>"bbbb",:f=>"ffff"})
puts hsh.replace({:b=>"b2b2b2",:g=>"ggg"})
print hsh.to_a()

result:

{:a=>"hello", :b=>"world"}

{:b=>"world"}

{:b=>"world", :c=>"third"}

{:b=>"world"}

true

true

{"world"=>:b}

[:b, :d, :e]

["world", "ddd", "eee"]

["world", "ddd"]

3

{:b=>"bbbb", :d=>"ddd", :e=>"eee", :f=>"ffff"}

{:b=>"b2b2b2", :g=>"ggg"}

[[:b, "b2b2b2"], [:g, "ggg"]][Finished in 0.1s]

三、查找和迭代

Hash是可枚举类型的对象,具有其搜索遍历和排序的能力,参见ruby之Enumerable

#!/usr/bin/ruby
def printResult(args)
    print args
    puts ""
end
hsh={:a=>1,:b=>2,:c=>5,:d=>4}
printResult hsh.find_all(){|key,value| value > 2}
printResult hsh.map { |key,value| key }
printResult hsh.max
printResult hsh.sort
printResult hsh.sort_by(){|key,value| value}
hsh.each do |key,value|
    print key
end
puts ""
hsh.each_key() do |key|
    print key
end
puts ""
hsh.each_value() do |value|
    print value
end

result:

[[:c, 5], [:d, 4]]

[:a, :b, :c, :d]

[:d, 4]

[[:a, 1], [:b, 2], [:c, 5], [:d, 4]]

[[:a, 1], [:b, 2], [:d, 4], [:c, 5]]

abcd

abcd

1254

[Finished in 0.1s]

时间: 2024-10-23 00:54:39

ruby学习之Hash的相关文章

Ruby学习笔记

Ruby学习笔记 Ruby语言中,以对象为基本单位,可以说所有的元素都是对象.按照之前对于面向对象程序的理解,对象是指包含了特定属性和方法集合的一组程序.对象由类来定义,具体的表现为对象实例.也就是说,对象是类的实例化[2]. Ruby语言的基础元素 对象:数值对象.字符串对象.正则表达式对象.时间对象.文件对象.目录对象.数组.哈希.例外对象等 数值对象   由于Ruby中一切数据都是对象,所以我们处理的数字实际上也是对象. a = 10,这样一个简单的赋值语句,实际上应当理解为 a = Nu

Ruby学习之mixin

直接上代码: module Action def jump @distance = rand(4) + 2 puts "I jumped forward #{@distance} feet!" end end class Rabbit include Action attr_reader :name def initialize(name) @name = name end end class Cricket include Action attr_reader :name def i

Ruby学习的一天-window下环境搭建及Ruby基础

学习Ruby参考教程: http://www.w3cschool.cc/ruby/ruby-installation-windows.html windowx下的ruby学习一.安装ruby,下载最新window稳定版ruby,这里是1.9.3版本点击next安装直到完成,为了方便,在安装界面下方会有个复选框提示是否需要安装watir,DevKit和环境配置的选项,这里勾选了,就不用那么麻烦配置了.安装完成后直接进入命令行,输入ruby -v .如果不出问题,应该会显示当前ruby版本信息. 二

ruby学习笔记(1)-puts,p,print的区别

ruby学习笔记-puts,p,print的区别 共同点:都是用来屏幕输出的. 不同点:puts 输出内容后,会自动换行(如果内容参数为空,则仅输出一个换行符号):另外如果内容参数中有转义符,输出时将先处理转义再输出p 基本与puts相同,但不会处理参数中的转义符号print 基本与puts相同,但输出内容后,不会自动在结尾加上换行符 1 2 3 4 5 6 7 s = "aaaa\nbb\tbb" p s p "****************" puts s p

ruby 学习笔记 2 -变量

变量 在ruby的世界里,变量有5种,全局变量 局部变量 实例变量 常量 类变量以及伪变量 常用的: 全局: 在全局使用,使用$开头,因为是全局的,所以在任何的代码例子中都可以改变其值,造成混乱,所以不建议使用. 局部: 在一定范围内有作用.如 i = 10 ,其中i 就是一个局部变量 常量: 例如圆周率Pi,但是Pi 我们可以赋予他其他值,是可以变化的. 常量的首个字母必须大写,当试图改变常量值时,解释器会给出警告“ex4.rb:19: warning: already initialized

ruby 学习笔记 1

写ruby blog  系统的记录下.也是对我学ruby的点滴记录. 先介绍下我的学习环境.系统:ubuntu12.04文档:techotopia ,ruby文档,the hard way learn ruby 以及其他文档记录:有道云笔记 关于ruby 学习ruby 通常会介绍下ruby的历史和发展,但是我觉得这些有的废话, 关于ruby,是一个日本人写出来的,是一门解释性语言 这就够了. 开始 在ubuntu上 ,先判断下是否installed ruby. 1 ruby -v 如果安装了会打

Ruby学习笔记0708

#!/usr/bin/env ruby class MegaGreeter attr_accessor :names # 初始化這個物件 def initialize(names = "World") @names = names end # 向每個人說 hi def say_hi if @names.nil? puts "..." elsif @names.respond_to?("each") # @names 是可以迭代的陣列容器 @nam

Ruby学习心得之 Linux下搭建Ruby环境

Ruby学习心得之 Linux下搭建Ruby环境1.前言2.Linux下安装Ruby环境 一.前言 本篇博文记录了Linux下Ruby编程环境的搭建. 本文内容基于以下文章:http://www.cnblogs.com/xfiver/archive/2012/03/08/2385833.html (linux下ruby安装[ubuntu10.10])http://www.360doc.com/content/07/0131/17/4910_351421.shtml (Ruby 在 Linux 上

Ruby 学习笔记1

Ruby已死,学习只是为了看redmine源码与理解动态语言..net 这边有F#,Java那边有Groovy Ruby 是脚本语言,所以继承了脚本语言的落点,ruby大小写敏感,常量要求首字母大写 改变常量不会报错,因为只是约定... Ruby方法后面可以不跟着括号,所以看见.名称,别以为就是属性... Ruby 中hash是字典,但是可以定义相同的key,而此时后面的key会覆盖前面的key对应的value,而此时字典中元素的个数不会最会增加,也就是说后面的相同key只是起到了改变value