你已經學過了陣列。在你學習“while
迴圈的時候,你對陣列進行過「pushed」動作,而且將陣列的內容印了出來。另外你應該還在加分習題裡研究過 Ruby 文件,看了陣列支援的其他操作。這已經是一段時間以前了,所以如果你不記得了的話,就回到本書的前面再複習一遍吧。
找到了嗎?還記得嗎?很好。那時候你對一個陣列執行了 push
函式。不過,你也許還沒有真正明白發生的事情,所以我們再來看看我們可以對陣列進行什麼樣的操作。
當你看到像 mystuff.append('hello')
這樣的程式時,你事實上已經在 Ruby 內部激發了一個連鎖反應。以下是它的運作原理:
- Ruby 看到你用到了
mystuff
,於是就去找到這個變數。也許它需要倒著檢查看你有沒有在哪裡用=
建立過這個變數,或者檢查它是不是一個函式參數,或者看它是不是一個全局變數。不管哪種方式,它得先找到mystuff
這個變數才行。 - 一旦它找到了
mystuff
,就輪到處理句點.
(period)這個操作符號,而且開始查看mystuff
內部的一些變數了。由於mystuff
是一個陣列,Ruby 知道mystuff
支援一些函式。 - 接下來輪到了處理
push
。Ruby會將 「push」和mystuff
支援的所有函式的名稱一一對比,如果確實其中有一個叫push
的函式,那麼Ruby就會去使用這個函式。 - 接下來Ruby看到了括號(parenthesis)並且意識到, 「噢,原來這應該是一個函式」,到了這裡,它就正常會呼叫這個函式了,不過這裡的函式還要多一個參數才行。
一下子要消化這麼多可能有點難度,不過我們將做幾個練習,讓你頭腦中有一個深刻的印象。下面的練習將字符串和列表混在一起,看看你能不能在裡邊找出點樂子來:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
你應該看到的結果
$ ruby ex39.rb
Wait there's not 10 things in that list, let's fix that.
Adding: Boy
There's 7 items now.
Adding: Girl
There's 8 items now.
Adding: Banana
There's 9 items now.
Adding: Corn
There's 10 items now.
There we go: ["Apples", "Oranges", "Crows", "Telephone", "Light", "Sugar", "Boy", "Girl", "Banana", "Corn"]
Let's do some things with stuff.
Oranges
Corn
Corn
Apples Oranges Crows Telephone Light Sugar Boy Girl Banana
Telephone#Sugar
$
加分習題
- 上網閱讀一些關於「物件導向程式(Object Oriented Programming)」的資料。暈了吧?嗯,我以前也是。別擔心。你將從這本書學到足夠用的關於物件導向程式的基礎知識,而以後你還可以慢慢學到更多。
something.methods
和 something的 class 有什麼關係?- 如果你不知道我講的是些什麼東西,別擔心。程式設計師為了顯得自己聰明,於是就發明了Opject Oriented Programming,簡稱為OOP,然後他們就開始濫用這個東西了。如果你覺得這東西太難,你可以開始學一下「函式式程式(functional programming)」。