到Ruby世界不可不認識:陣列
陣列 Array
陣列是每個程式語言很常碰到的資料型態,你可以想像前面講過的字串、數字通通可以塞進一個容器裡面,必且依照順序的排好,所以陣列最特別的是,有順序且是一堆資料的集合,在程式的世界裡常用這樣的方式來儲存資料,因此衍伸出許多特別的方法來處理這類型的資料,讓我們可以輕鬆拿到其中想要的內容。
建立陣列
可以透過直接指定的方式,或是藉由 ruby 特殊的%w 方式建立,但要注意這種方式所產生的內容都是字串。
1 | list = ["apple","bird","哈樓", 1, 2] |
拿出陣列內的元素/長度
要拿到內部的元素,我們可以透過 [索引] 的方式來取得,其中索引依照順序是從 0 開始算,
像是下面的例子可以看到 [0] 是代表取出第 1 個,而 [1] 則是第 2 個,以此類推,比較特別的是負數是表示從最後面開始算,所以 [-1] 表示最後 1 個。
我們可以透過 array.length 的方式知道其中內部含有幾個元素。
1 | pokemon = ["皮卡丘","傑尼龜","妙蛙種子","小火龍"] |
好用方法
和許多程式語言一樣,ruby 在處理陣列的資料類型中也可以透過許多方便的方法來進行處理。
map
- 可以對陣列裡的每個元素進行操作,並收集成一個新的陣列。
- |x|表示內部的每個元素,所以這個 x 可以自己改變名字,後面可以寫下對每個元素進行的操作或運算處理。
同意詞:collect
1 | a = [1,2,3] |
select
- 從陣列裡挑選符合條件的元素,並收集成一個新的陣列。
- |x|表示內部的每個元素,所以這個 x 可以自己改變名字,後面可以寫下選取的條件。
同意詞:filter
反意詞:reject
1 | a = [1,2,3,4,5,6,7,8,9,10] |
reduce
- 對陣列內的每個元素進行運算,並將所有的運算結果歸納成一個單一結果。
- 括號內的第一個參數表示累加值(範例使用 sum),預設沒特別指定的話就是 0,第 2 個參數表示當前的元素(範例使用 n),當前元素會依續代入陣列內數值並依照運算指示,所以下面例子中 sum 會與陣列內每個數字 n 相加,最後回傳就變成將陣列內所有數字加總的數值。
同意詞:inject
1 | a = [1,2,3,4,5,6,7,8,9,10] |
參考資料:
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Sean's Blog!
評論
GiscusDisqus