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
- 浏览 2761
- 评论(0)
- 论坛回复 / 浏览 (0 / 3036)
- 查看更多
相关推荐
使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库...
ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码
qtbindings - 允许你在Ruby中使用QT Gui工具包
安装ruby环境(使用cocoaPods)的基本步骤
大家使用ruby的时候,可以参考参考,这是ruby陷阱电子书
ruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ...
本文章主要介绍了ruby的使用流程,便于新手入门使用相关的软件。
ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件
ruby2ruby 提供一些用来根据 RubyParser 兼容的 Sexps 轻松生成纯 Ruby 代码的方法。可在 Ruby 中轻松实现动态语言处理。 标签:ruby2ruby
dry-types, 具有强迫和约束的ruby 柔性类型系统 干类型 链接文档文档插件开发在签出 repo 之后,运行 bin/setup 安装依赖项。 然后,运行 bundle exec rake run_specs 为了运行测试,还可以以运行 bin/co
使用Ruby和GitHub API构建Action的快速入门配方
Ruby编程,Ruby编程,Ruby编程,Ruby编程,Ruby编程,
ruby解析jsonruby解析
《Ruby完全自学手册》是一本完全覆盖Ruby和Ruby on Rails的完全自学手册。《Ruby完全自学手册》的特色是由浅入深、循序渐进,注重理论和实践的结合。虽然定位为入门手册,但是依然涉及许多高级技术和应用,覆盖到的...
ruby源代码 ruby源代码 ruby源代码 ruby源代码2
使用Python Lua和Ruby语言进行游戏编程
LazyHighCharts - 一个简单和非常灵活的方式从ruby代码使用HighCharts,经测试支持 Ruby on Rails, Sinatra 和Nanoc。
AppleID - 使用Ruby登录Apple后端库,具有小型自定义功能的OpenID Connect实现
ruby源代码 ruby源代码 ruby源代码 ruby源代码4
《Ruby设计模式》以通俗易懂的方式介绍了Ruby设计模式,主要包括Ruby概述、使用模板方法变换算法、使用策略替换算法、通过观察器保持协调、通过迭代器遍历集合、使用命令模式完成任务、使用适配器填补空隙、使用装饰...