2.1 配列

(Exercises終わるまではあんまり中身を書かないほうがいいですね、きっと...)

2.1.1 配列の構築

2.1.2 添字参照

2.1.3 添字代入

2.1.4 配列の比較

2.1.5 様々なメソッド

2.1.6 ブロック付きメソッドとイテレータ


Exercises


0. 空の配列を作る(例)
array = [] 

1. 文字列"abc", "def", "ghi"を要素に含む配列を作り、aに代入する。(「aに代入する」=>"a = ~")

a = ["abc","def","ghi"] 


2. 配列aの大きさを数える
a = ["test1","test2","test3" ] 
puts a.size

3. 配列aの中の要素を一つずつ取り出して、putsで出力する(each do ~ end構文)
a = ["test1","test2","test3" ]
a.each do |item|
puts item
end


4. 配列aの最初の要素にアクセスする
array = ["test1","test2","test3" ] 
puts array [0]

別の方法など
puts array.first

5. 配列aの最後の要素にアクセスする
array = ["test1","test2","test3" ] 
puts array [-1]

別の方法など
puts array.last

6. 配列aの2番目の要素を"xyz"に変更する
array = ["test1","test2","test3" ] 
array [1]="xyz"


7. 配列aの中の要素を","でつないで文字列に変換する

array = ["ham", "egg", "spam"]
array.join(",") #=> "ham,egg,spam"

8. 数字の0から10までを要素に含む配列bを作る。((0..10)という構文を使う)
b = (1...10).to_a 
p b
# why is this 9 NOT 10?

[NOTE]
(a .. b) and (a ... b) is not the same. two-dots means "from a to b" and three-dots means "from a to b-1"

b = (1..10).to_a 
p b

9. 配列bの各要素を10倍した配列を作る
b2=b.collect!{|i| i *10 }
p b2

You do not need to use collect!. just "collect" is OK.

b2=b.collect{|i| i *10 }
p b2

別の解

b2=b.map{|i| i *10 }
p b2

mapとcollectは名前は違うけれど、まったく同じ動作をします。好みのほうをどうぞ。

10. any?, all? を使ったサンプルを書いてみる

# ひとつでも奇数が含まれているかを調べる
a = [1,3,5,7,8]
a.any? do |n| 
  n % 2 == 0
end #=> true
 
# "n % 2 == 0"は、"n.even?"と書いても同じ
 
a = [1,3,5,7,9]
a.any? do |n| 
  n.even?
end #=> false
 
# すべてが偶数であるかを調べる
a = [2,4,6]
a.all? do |n|
 n.even?
end #=> true
 
a = [2,4,6,7]
a.all? do |n|
 n.even?
end #=> false 

11. 配列bの要素を逆に並べ替える
p b3 = b.reverse

b3に結果を代入する必要はないですが...

12. 配列bの要素の総和を求める
sum = b.inject(0){|result, i| result + i } 
p sum

おお、injectだ。すばらしい。

別の方法

sum = 0
b.each { |n| sum += n }
puts sum

さらにinjectを使った別の方法
puts b.inject(:+) 
最終更新:2009年05月19日 22:49