Ruby在线运行

版本:

所属目录
点击了解高性能代码运行API
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
万年历的程序编写 发布于:2024-11-10 21:40 改变变量值 发布于:2023-11-12 13:51 用于修改加入类的方法,动态元编程。 发布于:2023-11-12 11:08 Ruby in inheritance 发布于:2023-11-11 23:52 Object and Encapsulation 发布于:2023-10-25 18:02 Ruby数组,例子。 发布于:2023-10-12 21:33 If condition 发布于:2023-10-03 17:01 测试 基础概念 发布于:2023-09-17 16:22 java属性set or build 发布于:2023-05-24 15:48 一所文档转java字段 发布于:2023-04-11 15:22 文档转sql 发布于:2023-12-02 18:47 特殊供应商数据解析--江涛 发布于:2023-02-28 16:44 # 测试ruby代码 发布于:2023-02-15 17:08 化合物临时表插入 发布于:2023-01-30 11:16 dj最短路算法 发布于:2022-11-03 14:09 用嵌套for和嵌套while打印九九乘法表 发布于:2022-09-28 10:36 掌握ruby中的实例变量与类变量 发布于:2022-09-27 17:11 Ruby允许用户在定义方法时以等号(=)结束。 以及两种格式化指示符的用法 发布于:2022-09-14 10:09 测试ruby简易加密 发布于:2022-09-13 20:51 枚举转json 发布于:2023-04-11 14:49 多行转逗号带字符串 发布于:2023-02-17 14:57 多行转逗号 发布于:2023-02-14 15:25 sql表结构转文档 发布于:2022-03-31 13:17 医学影像三维重建系统 发布于:2022-01-17 23:39 医学影像三维重建系统 发布于:2022-01-17 23:38 医学影像三维重建系统 发布于:2022-01-17 23:36 ruby md5+base64加密 发布于:2022-01-11 22:01 gitlab job trace 发布于:2021-03-28 13:26 until语句 发布于:2020-07-08 16:10 主成分分析 发布于:2020-06-20 10:38 Ruby test 1. 类定义,对象初始化,方法调用。 发布于:2020-06-05 09:55 [更多]
显示目录

哈希(Hash)



学习嵌入式的绝佳套件,esp8266开源小电视成品,比自己去买开发板+屏幕还要便宜,省去了焊接不当搞坏的风险。 蜂鸣版+触控升级仅36元,更强的硬件、价格全网最低。

点击购买 固件广场

Ruby 哈希(Hash)

哈希(Hash)是类似 "employee" => "salary" 这样的键值对的集合。哈希的索引是通过任何对象类型的任意键来完成的,而不是一个整数索引,其他与数组相似。

通过键或值遍历哈希的顺序看起来是随意的,且通常不是按照插入顺序。如果您尝试通过一个不存在的键访问哈希,则方法会返回 nil

创建哈希

与数组一样,有各种不同的方式来创建哈希。您可以通过 new 类方法创建一个空的哈希:

months = Hash.new

您也可以使用 new 创建带有默认值的哈希,不带默认值的哈希是 nil

months = Hash.new( "month" )

或

months = Hash.new "month"

当您访问带有默认值的哈希中的任意键时,如果键或值不存在,访问哈希将返回默认值:

#!/usr/bin/ruby

months = Hash.new( "month" )

puts "#{months[0]}"
puts "#{months[72]}"

这将产生以下结果:

month
month
#!/usr/bin/ruby

H = Hash["a" => 100, "b" => 200]

puts "#{H['a']}"
puts "#{H['b']}"

这将产生以下结果:

100
200

您可以使用任何的 Ruby 对象作为键或值,甚至可以使用数组,所以下面的实例是一个有效的实例:

[1,"jan"] => "January"

哈希内置方法

我们需要有一个 Hash 对象的实例来调用 Hash 方法。下面是创建 Hash 对象实例的方式:

Hash[[key =>|, value]* ] or

Hash.new [or] Hash.new(obj) [or]

Hash.new { |hash, key| block }

这将返回一个使用给定对象进行填充的新的哈希。现在,使用创建的对象,我们可以调用任意可用的实例方法。例如:

#!/usr/bin/ruby

$, = ", "
months = Hash.new( "month" )

months = {"1" => "January", "2" => "February"}

keys = months.keys

puts "#{keys}"

这将产生以下结果:

2, 1

下面是公共的哈希方法(假设 hash 是一个 Hash 对象):

序号 方法 & 描述
1 hash == other_hash
检查两个哈希是否具有相同的键值对个数,键值对是否相互匹配,来判断两个哈希是否相等。
2 hash.[key]
使用键,从哈希引用值。如果未找到键,则返回默认值。
3 hash.[key]=value
value 给定的值与 key 给定的键进行关联。
4 hash.clear
从哈希中移除所有的键值对。
5 hash.default(key = nil)
返回 hash 的默认值,如果未通过 default= 进行设置,则返回 nil。(如果键在 hash 中不存在,则 [] 返回一个默认值。)
6 hash.default = obj
hash 设置默认值。
7 hash.default_proc
如果 hash 通过块来创建,则返回块。
8 hash.delete(key) [or]
array.delete(key) { 丨key丨 block }

通过 keyhash 中删除键值对。如果使用了块 且未找到匹配的键值对,则返回块的结果。把它与 _delete_if_ 进行比较。
9 hash.delete_if { 丨key,value丨 block }
为 block 为 true 的每个块,从 hash 中删除键值对。
10 hash.each { 丨key,value丨 block }
遍历 hash,为每个 key 调用一次 block,传递 key-value 作为一个二元素数组。
11 hash.each_key { 丨key丨 block }
遍历 hash,为每个 key 调用一次 block,传递 key 作为参数。
12 hash.each_key { 丨key_value_array丨 block }
遍历 hash,为每个 key 调用一次 block,传递 keyvalue 作为参数。
13 hash.each_key { 丨value丨 block }
遍历 hash,为每个 key 调用一次 block,传递 value 作为参数。
14 hash.empty?
检查 hash 是否为空(不包含键值对),返回 truefalse
15 hash.fetch(key [, default] ) [or]
hash.fetch(key) { 丨 key 丨 block }

通过给定的 keyhash 返回值。如果未找到 key,且未提供其他参数,则抛出 IndexError 异常;如果给出了 default,则返回 default;如果指定了可选的 block,则返回 block 的结果。
16 hash.has_key?(key) [or] hash.include?(key) [or]
hash.key?(key) [or] hash.member?(key)

检查给定的 key 是否存在于哈希中,返回 truefalse
17 hash.has_value?(value)
检查哈希是否包含给定的 value
18 hash.index(value)
为给定的 value 返回哈希中的 key,如果未找到匹配值则返回 nil
19 hash.indexes(keys)
返回一个新的数组,由给定的键的值组成。找不到的键将插入默认值。该方法已被废弃,请使用 select。
20 hash.indices(keys)
返回一个新的数组,由给定的键的值组成。找不到的键将插入默认值。该方法已被废弃,请使用 select。
21 hash.inspect
返回哈希的打印字符串版本。
22 hash.invert
创建一个新的 hash,倒置 hash 中的 keysvalues。也就是说,在新的哈希中,hash 中的键将变成值,值将变成键。
23 hash.keys
创建一个新的数组,带有 hash 中的键。/td>
24 hash.length
以整数形式返回 hash 的大小或长度。
25 hash.merge(other_hash) [or]
hash.merge(other_hash) { 丨key, oldval, newval丨 block }

返回一个新的哈希,包含 hash 和 _other_hash_ 的内容,重写 hash 中与 _other_hash_ 带有重复键的键值对。
26 hash.merge!(other_hash) [or]
hash.merge!(other_hash) { 丨key, oldval, newval丨 block }

与 merge 相同,但实际上 hash 发生了变化。
27 hash.rehash
基于每个 key 的当前值重新建立 hash。如果插入后值发生了改变,该方法会重新索引 hash
28 hash.reject { 丨key, value丨 block }
blocktrue 的每个键值对创建一个新的 hash
29 hash.reject! { 丨key, value丨 block }
reject 相同,但实际上 hash 发生了变化。
30 hash.replace(other_hash)
hash 的内容替换为 _other_hash_ 的内容。
31 hash.select { 丨key, value丨 block }
返回一个新的数组,由 block 返回 truehash 中的键值对组成。
32 hash.shift
hash 中移除一个键值对,并把该键值对作为二元素数组返回。
33 hash.size
以整数形式返回 hashsize 或 length。
34 hash.sort
hash 转换为一个包含键值对数组的二维数组,然后进行排序。
35 hash.store(key, value)
存储 hash 中的一个键值对。
36 hash.to_a
从 hash 中创建一个二维数组。每个键值对转换为一个数组,所有这些数组都存储在一个数组中。
37 hash.to_hash
返回 hash(self)。
38 hash.to_s
hash 转换为一个数组,然后把该数组转换为一个字符串。
39 hash.update(other_hash) [or]
hash.update(other_hash) {丨key, oldval, newval丨 block}

返回一个新的哈希,包含 hash 和 _other_hash_ 的内容,重写 hash 中与 _other_hash_ 带有重复键的键值对。
40 hash.value?(value)
检查 hash 是否包含给定的 value
41 hash.values
返回一个新的数组,包含 hash 的所有值。
42 hash.values_at(obj, ...)
返回一个新的数组,包含 hash 中与给定的键相关的值。
由JSRUN为你提供的Ruby在线运行、在线编译工具
        JSRUN提供的Ruby 在线运行,Ruby 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。
yout