区间range

区间实现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

你可能感兴趣的:(职场,Ruby,区间,休闲)