7(2)那时一无所知
2017-10-03 本文已影响21人
彩虹门票
关于初恋那点小事
正如你所看到的,
前面我们学了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
用一个包含表单中所有内容的阵列来写程序,用阵列中的方法来输出一个排版优美的表单。
至此我们已经学到了许多各式各样的阵列方法,接下来轮到我们来创建属于我们自己的阵列方法了。