在我们的日常生活中,量程无处不在。例如,它可能是阅读这篇文章需要多长时间,莫斯科和伦敦之间的距离,从现在到圣诞节的天数,等等。
尽管在编程语言中,范围的实现方式可能不同,但核心概念并无不同。
在本教程中,我们将学习如何在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中的范围。