Ruby 范围(Range)

  范围(Range)无处不在:January 到 December、 0 到 9、等等。Ruby 支持范围,并允许我们以不同的方式使用范围:

  作为序列的范围

  作为条件的范围

  作为间隔的范围

  作为序列的范围

  范围的第一个也是最常见的用途是表达序列。序列有一个起点、一个终点和一个在序列产生连续值的方式。

  Ruby 使用 ''..'' 和 ''...'' 范围运算符创建这些序列。两点形式创建一个包含指定的最高值的范围,三点形式创建一个不包含指定的最高值的范围。

  (1..5) #==> 1, 2, 3, 4, 5

  (1...5) #==> 1, 2, 3, 4

  ('a'..'d') #==> 'a', 'b', 'c', 'd'

  序列 1..100 是一个 Range 对象,包含了两个 Fixnum 对象的引用。如果需要,您可以使用 to_a 方法把范围转换为列表。尝试下面的实例:

  #!/usr/bin/ruby

  $, =", " # Array 值分隔符

  range1 = (1..10).to_a

  range2 = ('bar'..'bat').to_a

  puts "#{range1}"

  puts "#{range2}"

  这将产生以下结果:

  1, 2, 3, 4, 5, 6, 7, 8, 9, 10

  bar, bas, bat

  范围实现了让您可以遍历它们的方法,您可以通过多种方式检查它们的内容:

  #!/usr/bin/ruby

  # Assume a range

  digits = 0..9

  puts digits.include?(5)

  ret = digits.min

  puts "Min value is #{ret}"

  ret = digits.max

  puts "Max value is #{ret}"

  ret = digits.reject {|i| i < 5 }

  puts "Rejected values are #{ret}"

  digits.each do |digit|

  puts "In Loop #{digit}"

  end

  这将产生以下结果:

  true

  Min value is 0

  Max value is 9

  Rejected values are 5, 6, 7, 8, 9

  In Loop 0

  In Loop 1

  In Loop 2

  In Loop 3

  In Loop 4

  In Loop 5

  In Loop 6

  In Loop 7

  In Loop 8

  In Loop 9

  作为条件的范围

  范围也可以用作条件表达式。例如,下面的代码片段从标准输入打印行,其中每个集合的第一行包含单词 start,最后一行包含单词 end.:

  while gets

  print if /start/../end/

  end

  范围可以用在 case 语句中:

  #!/usr/bin/ruby

  score = 70

  result = case score

  when 0..40: "Fail"

  when 41..60: "Pass"

  when 61..70: "Pass with Merit"

  when 71..100: "Pass with Distinction"

  else "Invalid Score"

  end

  puts result

  这将产生以下结果:

  Pass with Merit

  作为间隔的范围

  范围的最后一个用途是间隔测试:检查某些值是否落在范围表示的间隔里。这是使用 === 相等运算符来完成的。

  #!/usr/bin/ruby

  if ((1..10) === 5)

  puts "5 lies in (1..10)"

  end

  if (('a'..'j') === 'c')

  puts "c lies in ('a'..'j')"

  end

  if (('a'..'j') === 'z')

  puts "z lies in ('a'..'j')"

  end

  这将产生以下结果:

  5 lies in (1..10)

  c lies in ('a'..'j')

  (编辑:雷林鹏 来源:网络)

雷林鹏分享:Ruby 范围(Range)的更多相关文章

  1. 雷林鹏分享:Ruby 循环

    Ruby 循环 Ruby 中的循环用于执行相同的代码块若干次.本章节将详细介绍 Ruby 支持的所有循环语句. Ruby while 语句 语法 while conditional [do] code ...

  2. 雷林鹏分享:Ruby 数据类型

    Ruby 数据类型 本章节我们将为大家介绍 Ruby 的基本数据类型. Ruby支持的数据类型包括基本的Number.String.Ranges.Symbols,以及true.false和nil这几个 ...

  3. 雷林鹏分享:Ruby 字符串(String)

    Ruby 字符串(String) Ruby 中的 String 对象存储并操作一个或多个字节的任意序列,通常表示那些代表人类语言的字符. 最简单的字符串是括在单引号(单引号字符)内.在引号标记内的文本 ...

  4. 雷林鹏分享:Ruby 数组(Array)

    Ruby 数组(Array) Ruby 数组是任何对象的有序的.整数索引的集合.数组中的每个元素都与一个索引相关,并可通过索引进行获取. 数组的索引从 0 开始,这与 C 或 Java 中一样.一个负 ...

  5. 雷林鹏分享:Ruby 安装 - Windows

    Ruby 安装 - Windows 下面列出了在 Windows 机器上安装 Ruby 的步骤. 注意:在安装时,您可能有不同的可用版本. 下载最新版的 Ruby 压缩文件.请点击这里下载. 下载 R ...

  6. 雷林鹏分享:Ruby 安装 - Unix

    Ruby 安装 - Unix 下面列出了在 Unix 机器上安装 Ruby 的步骤. 注意:在安装之前,请确保您有 root 权限. 下载最新版的 Ruby 压缩文件.请点击这里下载. 下载 Ruby ...

  7. 雷林鹏分享:Ruby 命令行选项

    Ruby 命令行选项 Ruby 一般是从命令行运行,方式如下: $ ruby [ options ] [.] [ programfile ] [ arguments ... ] 解释器可以通过下列选项 ...

  8. 雷林鹏分享:Ruby 语法

    Ruby 语法 让我们编写一个简单的 Ruby 程序.所有的 Ruby 文件扩展名都是 .rb.所以,把下面的源代码放在 test.rb 文件中. #!/usr/bin/ruby -w puts &q ...

  9. 雷林鹏分享:Ruby 环境变量

    Ruby 环境变量 Ruby 解释器使用下列环境变量来控制它的行为.ENV 对象包含了所有当前设置的环境变量列表. 变量描述 DLN_LIBRARY_PATH动态加载模块搜索的路径. HOME当没有参 ...

随机推荐

  1. 170509、文本编辑器编写的shell脚本在linux下无法执行的解决方法

    今天碰到一个奇怪的问题,编写好的shell脚本再linux上执行一直提示找不到文件或目录,后来想想是文本编辑器的问题,记录下来!!! 1.查看当前文本格式 Notepad++界面中,在右下角有文件格式 ...

  2. jquery 实现点击按钮后出现倒计时效果(用于实现发送手机验证码、邮箱验证码)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. Oracle性能优化之表压缩及并行提高效率的测试

    1.制作测试表 create table t1 as select * from FW_T_GTXLOG insert into t1 select * from t1; create table t ...

  4. 修改nginx的http响应头server字段

    信息泄露类型:HTTP服务器响应头Server字段信息泄露 示例: 解决: 需要重新对nginx编译安装: [root@localhost ~]# tar zxvf nginx-1.8.1.tar.g ...

  5. Python开发【Django】:CMDB基础

    浅谈ITIL TIL即IT基础架构库(Information Technology Infrastructure Library, ITIL,信息技术基础架构库)由英国政府部门CCTA(Central ...

  6. 寻找最小(最大)的k个数

    题目描述:输入n个整数,输出其中最小的k个元素. 例如:输入1,2,3,4,5,6,7,8这8个数字,则最小的4个数字为1,2,3,4. 思路1:最容易想到的方法:先对这个序列从小到大排序,然后输出前 ...

  7. Oracle数据库的经典问题 snapshot too old是什么原因引起的

    Oracle数据库的经典问题 snapshot too old是什么原因引起的 ORACLE经典错误求解:ORA-1555错误(Snapshot too old ) - ... 书上说是因为the r ...

  8. 001-jpa基本概念以及基础注解

    一.什么是JPA JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. S ...

  9. 从WW中剥离一个三维场景框架

    从WW中剥离一个三维场景框架,初步实现的一个.可以绘制一个三角形,但是不能够控制摄像机,没有增加鼠标事件.没有投影,世界变幻之类的东西.以后会不断学习逐步增加进来. 下载地址 下载V1.0.0.2

  10. rtcp多媒体控制协议应用

    rtcp package send/recv demo main.c #include <stdio.h> #include <rtp.h> #include <rtcp ...