区间实现3种不同的特性:
序列sequences
条件conditionals
间隔intervals
----序列:
ruby使用..和...来创建序列,..表示闭合区间,例如1..10表示的是[1,10]
...半闭半开区间例1...10表示[1,10)
(1..10).to_a #用to_a方法把序列转换成数组
(1..10).to_a ->[1,2,3,4,5,6,7,8,9,10]
('bar'..'bat').to_a->["bar","bas","bat"]
使用区间的方法:
1.初始化 digits=0..9
2.测试区间包含值 digits.include?(5) ->true
3.区间最大值 digits.max ->9
4.区间最小值 digits.min ->0
5.抛弃满足条件的区间 digits.reject {|i| i<5} ->[5,6,7,8,9]
这里用reject方法对digits进行操作以后返回的是digits去处满足条件区间之后,区间对应的数组。另外这里不能使用reject!方法,rejcet!方法只能使用在数组中!
-----太空船spaceship操作符<=>,比较两个值,并根据第一个值是否小于,等于或大于第二个值,分别返回-1,0或+1
---------------------------------------
条件conditions
描述:这种条件类似于一个双向开关,当区间的第一部分为true时,开关打开,区间第二部分为true时,开关关闭!
例:
while line=gets
puts line if line=~/start/..line=~/end/
end
代码解析:
在执行这段代码时,输入一行中如果不包含'start',开关没打开,不打印此行。
当这行中包含'start'时,开关打开,打印此行。
没遇到'end'之前,输入的没一行都打印。
遇到'end'时,这个end这行也会打印出来,同时,开关关闭,此后没行都不打印。
这里注意操作都是以行为单位进行。
---------------------------------------
间隔intervals
描述:一些值是否会落入区间表达式的间隔内。使用===即case equality操作符可以做到这点。
(1..10) === 5 ->true
(1..10) === 15 ->false
(1..10) === 3.14159 ->true
('a'..'j') ==='c' ->true
('a'..'j') ==='z' ->false
序列sequences
条件conditionals
间隔intervals
----序列:
ruby使用..和...来创建序列,..表示闭合区间,例如1..10表示的是[1,10]
...半闭半开区间例1...10表示[1,10)
(1..10).to_a #用to_a方法把序列转换成数组


1.初始化 digits=0..9
2.测试区间包含值 digits.include?(5) ->true
3.区间最大值 digits.max ->9
4.区间最小值 digits.min ->0
5.抛弃满足条件的区间 digits.reject {|i| i<5} ->[5,6,7,8,9]
这里用reject方法对digits进行操作以后返回的是digits去处满足条件区间之后,区间对应的数组。另外这里不能使用reject!方法,rejcet!方法只能使用在数组中!
-----太空船spaceship操作符<=>,比较两个值,并根据第一个值是否小于,等于或大于第二个值,分别返回-1,0或+1
---------------------------------------
条件conditions
描述:这种条件类似于一个双向开关,当区间的第一部分为true时,开关打开,区间第二部分为true时,开关关闭!
例:



在执行这段代码时,输入一行中如果不包含'start',开关没打开,不打印此行。
当这行中包含'start'时,开关打开,打印此行。
没遇到'end'之前,输入的没一行都打印。
遇到'end'时,这个end这行也会打印出来,同时,开关关闭,此后没行都不打印。
这里注意操作都是以行为单位进行。
---------------------------------------
间隔intervals
描述:一些值是否会落入区间表达式的间隔内。使用===即case equality操作符可以做到这点。
(1..10) === 5 ->true
(1..10) === 15 ->false
(1..10) === 3.14159 ->true
('a'..'j') ==='c' ->true
('a'..'j') ==='z' ->false
本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/65649,如需转载请自行联系原作者