Ruby Range类方法

Ruby Range类方法

Ruby提供了一个Range类。Ruby范围描述了一组有起点和终点的值。一个范围的值可以是数字、字符、字符串或对象。它是用 start_point…end_pointstart_point…endpoint 字面意思或用 : : new 构建的 。 它为代码提供了灵活性并减少了代码的大小。你也可以通过使用 Range.new 创建一个范围 。 一个包含.. . (两个点)的范围意味着从开始值到结束值都包括在内,如果一个范围包含 ...(三个点)意味着它不包括结束值。

示例:

(1..6).to_a    # Output= [1, 2, 3, 4, 5, 6]
(1...6).to_a    # Output= [1, 2, 3, 4, 5]

注意: 在Ruby中,Ranges可以使用对象来创建,只要这些对象可以使用其<=>操作符进行比较。为了返回顺序中的下一个对象,它提供了对 succ方法的支持。

类方法

new : 这个方法用于从给定的开始和结束值创建一个范围。在这个方法中,如果第三个参数是假的或不包括的,那么这个范围就包括末端对象。否则,它将省略。

Range.new(start, end, exclusive=false)

例子

# Ruby program to illustrate
# new Method
 
a = 12
b = 15
 
# Output will be 12..15
Range.new(a, b, false) 

输出

12..15

实例方法

  • == : 如果obj的起点、终点和第三个参数的值与rng相同,该方法返回true。否则,它将返回false。这个方法的返回类型是布尔值。
rng==obj-->true or false
  • 例子
# Ruby program to illustrate
# the use of == method
 
# Using Range.new class method
a = Range.new(2, 5, false)
b = Range.new(2, 5, false)
 
# Using == instance method
a == b                  
  • 输出
true
  • === : 在这个方法中,如果rng省略了它的末端,那么返回rng.start <= value < rng.end,如果rng是包容的,那么它返回 rng.start <= value<= rng.end。 方便的是,===是比较运算符,case语句使用它。
rng===value --> true or false
  • 例子
# Ruby program to illustrate the use
# of === method by case statement
 
# taking case statement
case 25.67
 
when 1...55 then puts "Lower"
when 55...85 then puts "Medium"
when 85...100 then puts "Upper"
end                                     
  • 输出
Lower
  • begin : 此方法返回rng的第一个对象。
rng.begin --> obj
  • 例子
# Ruby program to illustrate
# the use of begin method
 
# Creating range using the new method
b = Range.new(3, 9, false)
 
# using begin instance method
b.begin               
  • 输出
3
  • each :该方法用于遍历rng中的元素,依次将每个元素传递给块。
rng.each{|j| block} --> rng
  • 例子
# Ruby program to illustrate
# the use of each method
  
# using each method
(40..45).each do |i|
print i, '....'
end   
  • 输出
40....41....42....43....44....45....
  • end : 该方法返回rng的结束对象。
rng.end --> obj
  • 例子
# Ruby program to illustrate
# the use of end method
 
# using end method
a = Range.new(3, 9, false)
a.end                
  • 输出
9
  • eql? : 这个方法检查obj和rng在开始、结束和独占标志方面是否相等。如果obj包含与rng 相同的start、end和exclusive标志值,那么它返回true,否则返回false。
rng.eql?(obj) --> true or false
  • 例子
# Ruby program to illustrate
# the use of eql? method
  
# Constructing ranges
a = Range.new(2, 5, false)
b = Range.new(2, 5, false)
 
# using eql? method
a.eql?(b)              
  • 输出
true
  • exclude_end? : 如果rng的结尾被省略,该方法返回true,否则返回false。
rng.exclude_end? --> true or false
  • 例子
# Ruby program to illustrate the
# use of exclude_end? method
  
# constructing range
a = Range.new(3, 9, false)
 
# using exclude_end? method
a.exclude_end?    
  • 输出
false
  • first : 该方法返回rng的起始对象。
rng.first --> obj
  • 例子
# Ruby program to illustrate
# the use of first method
  
# constructing range
a = Range.new(3, 9, false)
 
# using the first method
a.first             
  • 输出
3
  • last : 该方法返回rng的最后一个对象。
rng.last --> obj
  • 例子
# Ruby program to illustrate
# the use of last method
  
# constructing range
a = Range.new(3, 9, false)
 
# using last method
a.last             
  • 输出
9
  • member? : 这个方法检查给定值是否是rng的成员。如果给定的值是rng的成员,那么它返回true,否则返回false。
rng.member?(value) --> true or false
  • 例子
# Ruby program to illustrate
# the use of member? method
  
# taking a range
a = 1..10
 
# using member? method
a.member?(5)          
  • 输出
true
  • include? : 如果obj是rng的一个元素,该方法返回true,否则返回false。
rng.include?(value) --> true or false
  • 例如:
# Ruby program to illustrate
# the use of include? method
  
# using include? method
("A".."G").include?("Z")
  • 输出
false
  • step :该方法通过将每一个n个 对象传递给区块,对rng 进行迭代。如果范围内有数字,则对一个数字的加法产生连续的元素。否则, 步骤调用succ方法来迭代范围内的元素。
rng.step(n=1){|obj|block} --> rng

参考资料: https://ruby-doc.org/core-1.9.3/Range.html

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程