关于初恋那点小事
前面我们学了each方法,阵列中还有其他方法……几乎和字符串中的方法一样多!事实上它们中的几个(例如length、reverse、+、*)在阵列中使用方法与在字符串中一样,唯一区别只在于它们计算的是阵列中的元素而不是字符串中的字母。而last和join是阵列中特有的方法,push与pop两种方法会改变其处理的阵列。和字符串中的方法一样,你不需要记住所有方法,只要知道在哪能找到就足够了(当然是来这里找)。
首先让我们看看to_s和join:join与to_s很类似,只是join会在阵列的对象中用于增加字符串。看下面这个例子:
foods = ['artichoke', 'brioche', 'caramel']
puts foods
puts
puts foods.to_s
puts
puts foods.join(', ')
puts
puts foods.join(' :) ') + ' 8)'
200.times do
puts []
end
正如你所看到的,
puts在输出阵列时与输出其他对象是不同的:puts会依次在每行输出阵列中的对象,因此输出一个空阵列200次的代码实际上并不会输出任何东西,空阵列并不指向任何对象,所以没有任何对象来输出(重复200次没输出任何东西,依旧是没输出)。试试输出一个包括其他阵列的阵列,会发生什么?答案是:依旧会类似的输出内部阵列中相应的对象
你会注意到我在想输出一个空行时我忽略掉了空字符(本应该是puts ‘ ’),这样同样也会输出一个空行。
接下来我们一同看看push、pop、last。push与pop是相互对立的,就像+和-一样。push在阵列末尾增加一个对象,pop会移除阵列中最后一个对象并告诉你具体移除的对象是什么。last与pop类似,会告诉你阵列中最后一个对象是什么,但不会改动阵列,而push与pop却会改动阵列:
favorites = []
favorites.push 'raindrops on roses'
favorites.push 'whiskey on kittens'
puts favorites[0]
puts favorites.last
puts favorites.length
puts favorites.pop
puts favorites
puts favorites.length
牛刀小试
- 写出我们在本章开头所说的那个程序:它先让我们键入尽可能多的单词(每行键入一个单词直到我们在一个空白行里敲回车),然后程序会将我们输入的单词以字母表顺序排列并输出。
提示:你会用到一种"sort"阵列方法:会给你一个已经排序好的阵列,用上它吧!
- 试着重写上面程序(要求是不能用到sort阵列方法),程序中一大部分是解决排序问题,尽可能多进行练习。
涉及高位优先排序算法,有点复杂,以后单独介绍 -----译者注 - 重写前面5 天外有天(3)无规无矩章节中的表单输出问题:
Table of Contents
Chapter 1: Numbers page 1
Chapter 2: Letters page 72
Chapter 3: Variables page 118
用一个包含表单中所有内容的阵列来写程序,用阵列中的方法来输出一个排版优美的表单。
至此我们已经学到了许多各式各样的阵列方法,接下来轮到我们来创建属于我们自己的阵列方法了。












网友评论