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. [Android Tips] 31.如何将第三库引入的 Permission 删除掉

    Just declare the incriminated permission in your (main) Manifest with the tools:node="remove&qu ...

  2. 2.title

    1.母版页里写title,标题会:会显示母版页里的. 结果如下: 2.母版页和实现模板页同时都设置了title,会显示实现模板页里的title 运行结果页:

  3. poj3171 Cleaning Shifts【线段树(单点修改区间查询)】【DP】

    Cleaning Shifts Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4422   Accepted: 1482 D ...

  4. 在Silverlight 5 项目中创建单元测试项目

    下载安装Silverlight ToolKit:测试框架程序集路径:C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Toolkit\dec ...

  5. MFC截图和界面刷新相关问题

    问题描写叙述:         就是首先用CDC来截图,保存图片的路径通过dlg窗体来手动设置并传入.但是截下来的图片就会连带那个对话框也截图下来.         就是这样.我想截后面那个图.前面这 ...

  6. 【转】Deep Learning(深度学习)学习笔记整理系列之(一)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0  2013-0 ...

  7. Visual Studio Code常用设置

    Visual Studio Code常用设置 • 自动保存设置 ▶ 文件(F) -> 首选项(P) -> 用户设置(U) ▶ 将"files.autoSave": &q ...

  8. javascript-复制

    cefCopy:function(str){ var t=this; if(!str || str=="暂无激活码") { $.notice("暂无激活码", ...

  9. Ubuntu下navicat过期解决办法

    Ubuntu下使用navicat过期.试用期是15天. 可以删除.navicat64/解决.不好的一点就是.需要重新连接数据库,以前的连接记录会被删除 rm -rf ~/.navicat64/

  10. 安装WIN7时提示“缺少所需的CD/DVD驱动器设备驱动程序”

    同事机器重装Win7,先百度了一下不适合64bit,于是直接上32bit系统. BOIS设置DVD启动,把安装盘放在移动光驱里,开始安装. 在安装时出现下图错误:“缺少所需的CD/DVD驱动器设备驱动 ...