目录:
导言
1.使用each迭代器遍历对象的每一个元素
1.size方法
2.length方法
3.count方法
导言:
在Ruby中我们可以使用非常多的方法来求对象是数组,字符串和哈希(hash)的元素个数(长度),下面我将给大家讲解使用不同的方法来求对象的元素个数,本章说的对象不包括数值型与正则表达式。
1.使用each迭代器遍历对象的每一个元素:
我们在没学过求对象的长度的方法时,我们最传统的方式来求对象的元素个数,可以使用each这个迭代器来遍历每一个元素(Ruby继承了Lisp的许多特点,它拥有Lisp的函数式迭代,
什么意思呢?简单点来说,Ruby中的一个方法也可以是迭代器,一个迭代器也有可能是方法)
这里假设我们创建了一个数组,这个数组的名称叫做“a”,里面包含了若干个元素:
a = Array["Ruby","Lua","Python","C"]
之后创建each迭代器,each迭代器的对象是a
a = Array["Ruby","Lua","Python","C"]
a.each do
end
随后在each外部创建一个变量“sum”用于统计最后的结果:
a = Array["Ruby","Lua","Python","C"]
sum = 0
a.each do
end
为什么要在each外部创建一个统计结果的变量而不是在each的内部呢?因为如果在each内部创建变量的话,变量的作用域仅允许在each迭代器的内部。但在each外部创建可就不一样了,变量的作用域会在整个文件中。sum这个变量的初始值我们要设为0,表示对象目前有0个元素个数。
因为each迭代的执行次数取决于对象的元素个数,所以我们每一次进入到each迭代中都让sum加上1来决定循环到sum循环了多少次,循环的次数也就是对象的元素个数。
a = Array["Ruby","Lua","Python","C"]
sum = 0
a.each do
sum += 1 #与sum = sum + 1等价
end
执行到最后我们使用puts方法输出sum的值,毕竟sum的值是each对象的元素个数:
a = Array["Ruby","Lua","Python","C"]
sum = 0
a.each do
sum += 1 #与sum = sum + 1等价
end
puts sum;
运行之后我们显然可以在控制台上看到结果
输出结果:4
这个输出结果也就是我们数组a的所有元素,这没有任何问题。
2.size方法:
我们不难发现上文的方法对于初学者来说有难度,我们可不可以使用一个现成的实例方法来直接访问到对象的元素个数呢?当然有,我们可以使用size方法来直接访问到对象的元素个数
a = Array["Ruby","Lua","Python","C"]
a.size()
这样,a的元素个数我们就已经求出来了,但是它返回的内容我们并没有使用一个变量去接收,
所以我们要使用一个变量"sum"去接收一下这个方法的返回值,并且输出sum这个变量的结果
a = Array["Ruby","Lua","Python","C"]
sum = a.size()
puts sum;
输出结果:4
size方法不仅仅可以求对象是数组,就连字符串,哈希(hash)也是信手沾来
求对象是字符串的元素个数例子:
a = "Hello Ruby"
sum = a.size()
puts sum
输出结果:10
求对象是哈希的元素个数例子:
a = {:a => "Hello",:b => "world"}
sum = a.size()
puts sum
输出结果:2
2:length方法
length方法具有和size方法一样的性质,一样都可以求数组,字符串,哈希(hash)对象的元素个数,为了使对比性强一点,我们还是来举一些实际例子
求对象是数组的元素个数例子:
a = Array["Ruby","Lua","Python","C"]
sum = a.length()
puts sum
输出结果:4
求对象是字符串的元素个数例子:
a = "Hello Ruby"
sum = a.length()
puts sum
输出结果:10
求对象是哈希的元素个数例子:
a = {:a => "Hello",:b => "world"}
sum = a.length()
puts sum
输出结果:2
虽然两个方法都具有一样的表达的效果,但是size方法大多用于在数组上,length方法大多用于在字符串上,读者可以按场景使用这两个方法
3:count方法
作者其实对count这个方法不太熟悉,所以作者对于这一个方法几乎是碎片化的,但为了读者们可以积累到Ruby中更多的方法,我还是决定简单讲讲这个方法。这个方法稍微有点特别,它不像前两个方法一样“能文能武”,它只针对于求数组和哈希(hash)的元素个数,但是这也足够满足我们的需求,下面我们还是举一些例子来说一说count方法
求对象是哈希的元素个数例子:
a = {:a => "Hello",:b => "world"}
sum = a.count()
puts sum;
输出结果:2
求对象是数组的元素个数例子:
a = Array["Ruby","Lua","Python","C"]
sum = a.count()
puts sum;
输出结果:4
似乎count更适合用在哈希(hash)上,但大家还是按照场景选择对应的方法。