如何在Ruby编程语言中使用范围

134 阅读4分钟

在我们的日常生活中,量程无处不在。例如,它可能是阅读这篇文章需要多长时间,莫斯科和伦敦之间的距离,从现在到圣诞节的天数,等等。

尽管在编程语言中,范围的实现方式可能不同,但核心概念并无不同。

在本教程中,我们将学习如何在Ruby编程语言中使用范围。

什么是范围?

具体来说,什么是范围?一个范围是一组有起点和终点的数值。

在编程中,一个范围可以是一组数字、字符、字符串和其他对象。一般的想法是,一个范围应该有一个起点和终点。

如何在Ruby中创建一个范围

在Ruby中创建一个范围的最简单方法是使用点符号。下面的例子说明了Ruby中的范围是如何工作的。

for i in 1..10
    puts i
end

上面的例子应该返回从1到10(包括10)范围的所有项目。

Ruby使用点符号来表示数值的范围。

两个点(...)被称为包容范围,因为它包括项目中的结束值。例如,1...10将从1开始,直到并包括10。

三个点(...)被称为排他性范围,因为它不包括范围中的结束值。例如,1...10从1开始,以9结束。

序列

Ruby范围的基本实现是生成或经过一个数值序列。在前面的例子中,我们在for循环中使用了一个范围来生成一个1到10(包括)之间的数值序列。

我们也可以使用范围来循环一个数组中的项目,特别是当我们知道总的项目时。

考虑一下下面的数组。

databases = ["MySQL", "PostgreSQL", "Redis", "MongoDB", "Firestore"]

为了获得数组中的项目,我们可以使用项目索引,这将导致5段重复的代码。

我们可以使用一个范围,如

databases = ["MySQL", "PostgreSQL", "Redis", "MongoDB", "Firestore"]
for i in 0..4
    puts databases[i]
end

尽管上面的实现不是进行这种操作的最有效的方法,但它比一堆重复的索引更容易阅读。

值得注意的是,范围并不只限于整数值。我们可以使用一个简单的范围来生成字母表中的所有字母。

puts ('a'..'z').to_a

上面的代码将生成a和z之间的所有字符,并使用to_a方法将它们放入一个数组。

条件式

范围也可以在条件表达式中实现。例如,假设我们想确定一个值是否在各组数字之间。

让我们取一个随机数,然后问:如果这个数字在1和10之间,20和30之间,40和50之间,等等。

我们可以用几行代码来实现这一点,比如

random = 34
correct = case random
when 1..10 then "I am here"
when 11..20 then "I am above 10"
when 21..30 then "Try above 20"
when 31..40 then "I am above 15 x 2"
when 41..50 then "I am halfway!"
else
    puts "I am completely lost!"
end
puts correct

上面的代码使用范围来检查一些范围括号,并评估随机值是否在任何一个集合内。

区间

Ruby范围的最终实现是测试一个值是否在其他值的一个区间内。它与条件式几乎没有区别,但它使用逻辑运算符来评估。

例如

if ((1..10)) === 7
    puts "Maybe check other places"
elsif
    puts "I could be here"
end

上面的简单实现检查值7是否在1和10的范围内,如果为真则执行一段代码。

包含和覆盖

在处理Ruby范围时,有两种方法可以使用。它们是包含和覆盖。

include方法的工作原理是检查一个值是否在范围内,而cover方法是检查范围的初始值和结束值是否匹配。

puts (1..10).include? 10
puts (1..10).cover? 1

闭合

在这个快速指南中,我们讨论了在Ruby中使用Ranges的基本知识。虽然还有更多,但本教程中讨论的概念应该可以帮助你理解Ruby中的范围。