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. oracle 日期常用函数(转载)

      日期运算函數     ADD_MONTHS(d,n)    --时间点d再加上n个月      ex.     select sysdate, add_months(sysdate,2) aa f ...

  2. Oracle管理监控之监控表空间使用率脚本

    SELECT D.TABLESPACE_NAME,       SPACE "SUM_SPACE(M)",       BLOCKS SUM_BLOCKS,       SPACE ...

  3. Apache 2.4 编码GB2312中文乱码的问题

    今天部署了一个项目,代码和数据库都是gb2312的,本地和服务器都是apache2.4的版本,本地编码没问题,response的content-type是空的.按html的mete解析的,查看源码也是 ...

  4. IIS7.5站点配置

    1. 创建站点映射目录: c:\website\release 2. 创建系统用户: a.本地用户和组-->用户-->新用户-->用户名\密码:WebUSR.xxxyyy--> ...

  5. 站点默认访问https

    需求简介 现在网站都是https访问了,再用http会显得很low,所以我要把网站设置为默认的https访问. 1nginx的rewrite方法 这应该是大家最容易想到的方法,将所有的http请求通过 ...

  6. 正则表达式,以python为例

    转载需注明原文地址和作者两项内容. 正则表达式目的是能够快速处理字符串内容,主要用于找出指定的字符串,配合其他操作完成任务.使用正则表达式时要了解自己语言的特性,python中的正则表达式默认情况是贪 ...

  7. 026-B树(一)

    1.内节点:非根非叶子节点,即非根的分支节点. 2.名称:B-树=B树=平衡多路查找树. 3.定义:m阶B树. (0).根节点孩子数rootChildNum范围:若没有孩子节点则孩子数为0,若有孩子则 ...

  8. zw黑天鹅足彩实盘测试5月数据包

    [文件说明] $mx1,是单日数据:$mx9,是日数据和 入选率:2%, 准确度:40% 盈利率:120%左右 目前在测试稳定性 5月1日-6月14日,实盘数据 $mx9,15061409x15061 ...

  9. hdu5106 数位dp

    这题说的是给了一个二进制数R , 计算出 在[0,R) 区间内的数, 二进制中有n个1 个和 n<=1000; R<2^1000, 这样 用dp[len][lee] 表示在第len位的时候 ...

  10. 20154312曾林 - Exp1 PC平台逆向破解

    1.逆向及Bof基础实践说明 1.1-实践目标 对象:pwn1(linux可执行文件) 目标:使程序执行另一个代码片段:getshell 内容: 手工修改可执行文件,改变程序执行流程,直接跳转到get ...