站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
▼
建站程序
开发
服务器
办公软件
开发教程
▼
服务器教程
软件使用教程
运营教程
热门电子书
▼
CSS教程
WordPress教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
热点词条
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
Ruby-标准类型
”(章节)
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
== 区间 == 区间存在于任何地方:一月到十二月,0到9,半熟到十分熟,50米到67米等等。既然Ruby要帮我们模拟现实,那看起来支持区间应该是最自然不过的事情了。实际上,Ruby做得更好,它竟然用区间实现了三个不同的特性:序列,条件和间隔。<br> 区间作为序列<br> 区间的首选用法同时也可能是最自然的用法就是表述一个序列。序列有一个开始位置,结束位置和产生连续值的某种途径。在Ruby中,使用形如".."和"..."的区间操作符来创建序列。两个点号创建一个闭区间,而三个点号创建一个右开区间。(译者注:这里要说明一下,笔者查阅过网络上的资料,没能找到Ranges的标准翻法,把Ranges翻译作区间,取其义相近,由此在这里又联想出闭区间和右开区间的翻法,可能会贻笑大方。如果有的朋友不知道闭区间和右开区间的意思,我解释一下:闭区间指两个边界均取值,右开区间指右边界不取值。) <br> 1..10<br> 'a'..'z'<br> 0...anArray.length <br> 不像一些早期版本的Perl,在Ruby中,区间在内部不是表现为列表:1..100000的序列被储存为一个Range对象,它包含两个Fixnum对象的引用。如果你需要,你可以使用to_a方法把区间转换成列表。<br> (1..10).to_a >> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]<br> ('bar'..'bat').to_a >> ["bar", "bas", "bat"] <br> Range类实现了遍历和通过不同途径测试它的内容的方法。<br> digits = 0..9 <br> digits.include?(5) >> true <br> digits.min >> 0 <br> digits.max >> 9 <br> digits.reject {|i| i < 5 } >> [5, 6, 7, 8, 9] <br> digits.each do |digit| <br> dial(digit) <br> end <br> 我们介绍了这么多关于数字和字符串的区间,就像你对于一个面向对象语言所期待的那样,Ruby能够创建基于你自己定义的对象的区间。唯一的限制就是这个对象必须能够响应succ方法来返回序列中的下一个对象,并且这个对象必须能够使用<=>运算符来被比较,即常规的比较运算符,有时也叫做太空船算符,它比较两个值,返回-1、0或者+1,这取决于第一个值是否小于、等于或者大于第二个值。<br> 下面是一个简单的例子,用来描述"#"号的个数,我们要用它做一个文本样式的拨块以便测试我们的点唱机的音量。<br> class VU<br> include Comparable<br> attr :volume<br> def initialize(volume) # 0..9<br> @volume = volume<br> end<br> def inspect<br> '#' * @volume<br> end<br> # Support for ranges<br> def <=>(other)<br> self.volume <=> other.volume<br> end<br> def succ<br> raise(IndexError, "Volume too big") if @volume >= 9<br> VU.new(@volume.succ)<br> end<br> end <br> 我们创建一个VU对象的区间来测试一下。<br> medium = VU.new(4)..VU.new(7) <br> medium.to_a >> [####, #####, ######, #######] <br> medium.include?(VU.new(3)) >> false <br> 区间作为条件<br> 和描述序列一样,区间也可以用作条件表达式,例如,下面的代码片断显示从输入端接受到的行中以"start"开始和以"end"结尾的行。<br> while gets<br> print if /start/../end/<br> end <br> 没有表现出来的是,区间把每次测试的状态都作了记录,我们会在82页的详细描述中给出一些例子。<br> 区间作为间隔<br> 万能的区间的最后一个用途是间隔测试:看一些值是否落在了区间所描述的间隔内。这要用到===,条件相等算符。<br> (1..10) === 5 >> true <br> (1..10) === 15 >> false <br> (1..10) === 3.14159 >> true <br> ('a'..'j') === 'c' >> true <br> ('a'..'j') === 'z' >> false <br>
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)