陣列是每個程式語言很常碰到的資料型態,你可以想像前面講過的字串、數字通通可以塞進一個容器裡面,必且依照順序的排好,所以陣列最特別的是,有順序且是一堆資料的集合,在程式的世界裡常用這樣的方式來儲存資料,因此衍伸出許多特別的方法來處理這類型的資料,讓我們可以輕鬆拿到其中想要的內容。
可以透過直接指定的方式,或是藉由 ruby 特殊的 %w 方式建立,但要注意這種方式所產生的內容都是字串。
list = ["apple","bird","哈樓", 1, 2]
list = %w(apple bird 哈樓 1 2) # ["apple","bird","哈樓", "1", "2"] => 用這種方式會產生的 "1","2" 是字串
要拿到內部的元素,我們可以透過 [索引] 的方式來取得,其中索引依照順序是從 0 開始算,
像是下面的例子可以看到 [0] 是代表取出第 1 個,而 [1] 則是第 2 個,以此類推,比較特別的是負數是表示從最後面開始算,所以 [-1] 表示最後 1 個。
我們可以透過 array.length 的方式知道其中內部含有幾個元素。
pokemon = ["皮卡丘","傑尼龜","妙蛙種子","小火龍"]
puts pokemon[0] # 印出 皮卡丘
puts pokemon[1] # 印出 傑尼龜
puts pokemon[-1] # 印出 小火龍
puts pokemon[-2] # 印出 妙蛙種子
# 可以用 first 和 last 取出頭或尾,
puts pokemon.first # 印出 皮卡丘
puts pokemon.last # 印出 小火龍
# length表示陣列的長度
puts pokemon.length # 印出 4
pokemon << '小智' # 在最後⾯加入
puts pokemon.length # 印出 5
pokemon.push('小霞') # 最後面加入
puts pokemon.length # 印出 6
puts pokemon # 經過上面處理印出 皮卡丘, 傑尼龜, 妙蛙種子, 小火龍, 小智, 小霞
和許多程式語言一樣,ruby 在處理陣列的資料類型中也可以透過許多方便的方法來進行處理。
同意詞:collect
a = [1,2,3]
p a.map { |x| x*2 }
# 印出 [2, 4, 6]
a = [1,2,3,4,5,6,7,8,9,10]
p a.select { |x| x < 5 }
# 印出 [1, 2, 3, 4]
a = [1,2,3,4,5,6,7,8,9,10]
p a.reduce { |sum, n| sum + n }
# 印出 55
以上就是初步對於Ruby中的陣列使用及方法介紹,下一章節讓我們來了解Ruby特殊的"範圍"方法可以應用在陣列或是其他資料型態中,這會是個神奇黑魔法喔,大家敬請期待!!
參考資料: