ruby使用区间实现了3中不同特性:序列,条件和间隔。
一、序列
在ruby中只用".."和"..."区间操作符来创建序列。两个点的形式是创建闭合的区间(包括右端的值),而3个点的形式
是创建半开半闭的区间(不包括右端的值)。
注意:
1、任何类型的对象都可以构造区间,只要这些对象可以使用它们的<=>操作符来进行比较,同时支持succ方法,返回序列中的下一个对象
2、区间在内部用列表表示,1..100序列被存储为Range对象,它包含对两个Fixum对象的引用。可以通过to_a方法把区间转换成列表。
(1..10).to_a ---[1,2,3,4,5,6,7,8,9,10]
二、区间作为条件
当区间作为条件的时候,它表现的就像一个双向开关,当区间的第一部分的条件为true时,它们就打开,当区间第二部分
的条件为true时,他们就关闭。
注意,每一个区间对象唯一对应一个状态机。
1、在条件语句中区间作为条件时,当开始条件为true时,状态机从原来状态变更一次,然后紧接着判断结束条件,如果
结束条件为false,则状态机的最终状态为由开始条件时的状态,如果为true,则状态机的发生状态变更。
注意,结束条件的发生的状态变更不会影响这条语句的返回结果,这个语句的返回结果由开始条件所决定的状态机的结果而定。
但是状态机的结果受结束条件的影响。
2、在循环或迭代中运用区间作为条件时,如果每次循环或迭代所使用的区间对象是同一个对象,那么每次循环后的状态机将影响下次循环。
下面是列子:
ruby 代码
- puts a = (11..20).collect {|i| (i%4==0)..(i%3==0) ? i : nil}
结果显示如下:
1、 如果状态机原来状态是关,且开始条件为true,则状态机将从关变成开,如果状态机原来状态是开,则状态不变
2、 如果状态机状态为开,且结束条件为true,则状态机将从开变关,如果状态机状态是关,则状态不变。
3、 调用的返回结果由当前状态机的状态列决定。如果为开就返回true,否则返回false
4、 区间对象第一次调用时,其状态机状态为关,以后每次调用时,其状态机的初始状态是上次调用结束后状态机的状态。
注意:如果是采用三点式的区间不会在进入开状态后立即进入求解结束条件,
三、区间作为间隔
区间作为间隔测试:用于判断一些值是否会落入区间表达的间隔内。使用===操作符完成这个。
分享到:
- 2007-05-15 14:06
- 浏览 2781
- 评论(0)
- 论坛回复 / 浏览 (0 / 3054)
- 查看更多
相关推荐
本文档将详细介绍Ruby支持的各种数据类型及其用途,帮助开发者更好地理解和使用这些类型来构建高效、灵活的应用程序。 #### 数字类型(Number) 数字类型是Ruby中最基本的数据类型之一,它分为整数(Integer)和...
运行 Ruby 程序可以通过多种方式,例如直接运行 Ruby 解释器,或在脚本文件中使用 shebang 行(在 Unix/Linux 系统中)指定解释器路径,而在 Windows 系统中,可以将文件类型与 Ruby 解释器关联,使得双击文件即可...
本文档旨在详细介绍Ruby支持的各种基本数据类型及其使用方法,包括但不限于Number(数值)、String(字符串)、Ranges(范围)、Symbols(符号)以及特殊值true、false和nil。此外,还会涵盖两种重要的复合数据结构...
- **动态性**:Ruby支持动态类型和运行时修改,这使得程序员可以在程序运行过程中改变其行为。 - **元编程能力**:Ruby允许程序员通过代码生成代码,这种能力极大地增强了语言的灵活性。 **1.4 Ruby与Python的比较*...
Ruby的数据类型包括数字、字符串、数组、哈希表、区间和正则表达式。数字可以表示为八进制(前缀0)、十六进制(前缀0x)或二进制(前缀0b)。字符串可以由单引号或双引号包围,数组可以包含不同类型的元素,并且下标从0...
范围类型表示一个数值区间。 **4.6 Symbol** 符号是一种不可变的数据类型,通常用于作为哈希表的键。 **4.7 正则表达式** 正则表达式用于模式匹配和字符串操作。 #### 五、代码块和迭代器 **5.1 代码块(Block)...
本文将深入探讨Ruby中的基本数据类型,包括数值类型、字符串、区间、数组、散列表以及符号。 首先,我们来看数值类型。Ruby中的数值类型包括整数和浮点数。整数可以以二进制、八进制、十进制或十六进制的形式表示,...
- **使用Ruby解释器**:直接通过命令行运行Ruby脚本。 - **使用IDE**:例如FreeRIDE、SciTE等,提供更友好的编程界面。 - **使用fxri**:用于查看文档和API信息。 **2.3 Ruby-irb** irb是Ruby的交互式Shell,可...
Ruby是一种动态类型的开源编程语言,由Yukihiro Matsumoto(松本行弘)于1995年设计并发布。它融合了面向对象编程(OOP)、函数式编程(FP)以及元编程等多种特性,具有极高的灵活性与可读性。Ruby的设计哲学之一是...
本文将详细介绍Ruby中各类数据类型的基本概念和使用方法。 一、数值类型 Ruby中的数值类型分为整型和浮点型,而整型又细分为Fixnum和Bignum。 1. Fixnum:固定长度的整数,用于表示31位以内的整数值。Ruby会根据...
范围类型用于表示两个数字之间的连续区间。 **4.6 Symbol** 符号是不可变的字符串,用于定义方法名或键。 **4.7 正则表达式** 正则表达式用于文本模式匹配。 #### 五、代码块和迭代器 **5.1 代码块** - **...
- **变量**: 变量用于存储值,Ruby使用动态类型,无需声明变量类型即可赋值。 ##### 字符串 - **定义**: 字符串可以使用单引号、双引号或者%q/%Q/%x/%X语法创建。 - **操作**: 支持各种字符串方法,如长度、替换、...
本篇文章将详细解析Ruby中范围的三种主要类型:序列范围、条件范围和区间范围。 1. **序列范围**: 序列范围是最常见的范围类型,它表示一个起始值到一个结束值之间的连续序列。在Ruby中,我们可以使用双点`..`或...
其原理是将待排序区间 S 分成长度大致相等的两个子区间 S1、S2,分别对这两个子区间进行排序,最后将排好序的子区间合并成一个新的有序区间。 **时间复杂度**:Θ(n log n) ```ruby def merge_sort(a) return a if...
expr`用于检查`expr`是否已定义,返回`nil`或描述`expr`类型的字符串。 10. **双冒号 “::” 运算符**: - `::`用于全局访问常量、方法和类,如`::Module::Method`,即使在类或模块内部也可以访问。 了解并熟练...
- **弱类型语言**:如JavaScript、Ruby和Perl等,这类语言在变量声明时不需要指定数据类型,类型会在运行时自动确定。 - **Java编译与运行**:Java源代码通过`javac`命令编译成`.class`文件,再通过Java虚拟机(JVM...
16. **数据类型和类型转换**:Groovy是一种动态类型语言,但它也允许开发者使用静态类型。教程会介绍Groovy如何处理类型,包括类型转换。 17. **运算符**:Groovy支持多种运算符,如算术运算符、条件运算符、字符串...
2.1 第一种启动方式:通过命令行进入list_self项目目录,执行ruby .script/server命令启动网络服务器。 2.2 第二种启动方式:使用InstantRails工具,按照提示启动服务,选择相应的Rails应用程序并启动Mongrel服务。 ...
- **启动方法1**:通过输入命令进入项目目录,然后使用`ruby .script/server`启动网络服务器。 - **启动方法2**:运行`InstantRails.exe`,选择"Start with Mongrel"启动服务器。 5. **服务器数据库管理** - **...