値を記録(表現)する単位がオブジェクトであり,幾つかの種類がある.まずは,数値,文字列,配列オブジェクトを,その後,ハッシュオブジェクトを理解し,使えるようになりたい.
また,それぞれのオブジェクトにはオブジェクトを操作するためのメソッドが定義されている.例えば,"hello"
は文字列オブジェクトであるので,その後ろに .length
を付ければ文字列の長さが取得できたり,.upcase
を付ければすべて大文字に変換した文字列を得ることができる.さらに,.to_i
を付ければ整数に変換する.どのメソッドが使えるかについては,その値がどの種類のオブジェクト(クラス)であるかによって変わる.
各オブジェクトにどのようなメソッドが定義されているかを調べるためには https://www.ruby-lang.org/ja/ から 「ドキュメント」 → 「Rubyコアリファレンス(英語)」 → 「Classes」 のリンクをたどれば良い.
複数のオブジェクトをまとめて順序を付けて管理するような場合に配列オブジェクトが利用できる.新しい配列を作るには,代入したい値(オブジェクト)を,
で区切って全体を [ ]
で囲めば良い.要素を取り出したり,格納したりするにはscores[2]
のように要素番号を指定すれば良い.このとき,要素の番号は0番目からスタートすることに注意しよう.また空の配列を定義するには names = []
のように記述する.
array1.rb
# 配列を作って値を代入する
scores = [10, 80, 60]
# 0番目の値を表示する
p scores[0]
# 配列を作って値を代入する
vegetables = ["lettuce", "cucumber", "eggplant", "radish"]
# 1番目の値を表示する
p vegetables[1]
# 0番目の値を書き換える
scores[0] = 70
# 配列のすべてを表示する
p scores
# 配列の要素をそれぞれ書き換える
vegetables[0] = "レタス"
vegetables[1] = "キュウリ"
vegetables[2] = "ナス"
vegetables[3] = "ダイコン"
# 配列のすべてを表示する(ただし,Windows版では文字化けするので,p の代わりに puts を使えば良い)
p vegetables
# 配列を初期化する
names = []
p names
# 値を代入(追加)する
names[0] = "Rinsaka"
names[1] = "Koichiro"
p names
# 0,1 番目まで定義された配列の3番目に値を追加すると,2番目が nil (空値)になる
names[3] = "Kobe"
p names
10 "cucumber" [70, 80, 60] ["レタス", "キュウリ", "ナス", "ダイコン"] [] ["Rinsaka", "Koichiro"] ["Rinsaka", "Koichiro", nil, "Kobe"]
Ruby では配列の中にどのようなオブジェクトでも代入できる.例えば文字列と数値が混在したような配列も作ることができる.
array2.rb
# 配列を作って値を代入する
scores = [10, "Absence", 80, 60]
p scores
[10, "Absence", 80, 60]
配列の要素を取り出すには,scores[2]
のように要素番号を指定するほか,scores[0..2]
, scores[0...2]
,scores[-1]
,scores[2, 4]
などが利用できる.
array3.rb
# 配列を作って値を代入する
scores = [70, 80, 60, 55, 90, 83, 78]
p scores
# 0番目から2番目までを取り出す
p scores[0..2]
# 0番目から2番目未満までを取り出す
p scores[0...2]
# 後ろから1番目を取り出す
p scores[-1]
# 2番目から4個を取り出す
p scores[2, 4]
[70, 80, 60, 55, 90, 83, 78] [70, 80, 60] [70, 80] 78 [60, 55, 90, 83]
配列には様々なメソッドが準備されている.配列の大きさ(要素数)は size
メソッドで取得できる.ソート,逆順,末尾に追加なども利用できる.
array4.rb
# 配列を作って値を代入する
scores = [70, 80, 60, 55, 90, 83, 78]
p scores
# サイズを取得
p scores.size
# ソートする
p scores.sort
# 逆順
p scores.reverse
# ソートして逆順にする
p scores.sort.reverse
# 末尾に追加する
p scores.push(100)
[70, 80, 60, 55, 90, 83, 78] 7 [55, 60, 70, 78, 80, 83, 90] [78, 83, 90, 55, 60, 80, 70] [90, 83, 80, 78, 70, 60, 55] [70, 80, 60, 55, 90, 83, 78, 100]
配列に格納した値をすべて表示したり,値すべてに何らかの処理を行うために,繰り返しの構文がよく利用される.Rubyでは each
メソッドと呼ばれる便利なメソッドが準備されている.
配列.each do |変数| 処理 end
array5.rb
# 配列を作って値を代入する
scores = [70, 80, 60]
# すべての値を2倍して表示する
scores.each do |score|
puts score * 2
end
140 160 120