Ruby入門メモ(2)
配列オブジェクト
Arrayリファレンスを参照。
例1
price = [500, 800, 100] p price[0] price[0] = 10 # 書き替え p price[0] price[4] = 300 # 配列の範囲外にも要素が追加できる p price p price[0..2] # 添字0〜2(0,1,2)の要素を返す p price[0...2] # 添字0〜2未満(0,1)の要素を返す p price[-1] # 負の数を指定した場合、末尾から逆順に数えた要素を返す p price[1, 2] # 1つ目の要素から2つ分を返す
実行結果
500 10 [10, 800, 100, nil, 300] [10, 800, 100] [10, 800] 300 [800, 100]
例2
sales = [5, 8, 4] p sales sales[0...2] = [1, 2] # 添字0〜2未満の要素を[1, 2]に書き換える p sales sales[1, 0] = [10, 11, 12] # 添字1から0個分の要素を[10, 11, 12]に書き換える p sales sales[0, 2] = [] # 添字0から2個分の要素を削除する p sales
実行結果
[5, 8, 4] [1, 2, 4] [1, 10, 11, 12, 2, 4] [11, 12, 2, 4]
例3
sales = [1, 10, 11, 12, 2, 4] p sales.size # 配列の要素数を数える p sales.sort # 配列を昇順に並び替える # 配列を昇順に並び替え、さらに、それを逆順に並び替える # メソッドはピリオドで繋ぐことができる p sales.sort.reverse p sales.push(100) # 末尾に要素を追加する sales << 100 << 102 # 末尾に要素を追加する p sales
実行結果
6 [1, 2, 4, 10, 11, 12] [12, 11, 10, 4, 2, 1] [1, 10, 11, 12, 2, 4, 100] [1, 10, 11, 12, 2, 4, 100, 100, 102]
ハッシュオブジェクト
Hashリファレンスを参照。
基本形
keyとvalueを指定する。
price = {"hoge" => 200, "huga" => 300} p price["hoge"] p price
実行結果
200 {"hoge"=>200, "huga"=>300}
シンボル
keyが文字列の場合、シンボル(コロンのあとに文字列を書く)という書き方ができる。
シンボルは識別子として使えるオブジェクトで、文字列を使うよりも早い。
price = {:hoge => 200, :huga => 300} p price[:huga] # 300 p price
実行結果
300 {:hoge=>200, :huga=>300}
Ruby1.9から対応した書き方
price = {hoge: 200, huga: 300} p price[:hoge] #シンボルでアクセス p price
実行結果
200 {:hoge=>200, :huga=>300}
Hashクラスのメソッド例
p price.size
p price.keys
p price.values
p price.has_key?(:hoge)
実行結果
2 [:hoge, :huga] [200, 300] true
ハッシュと配列の相互変換
h = {ponkiti: 100, pon: 200} p h # ハッシュ p h.to_a # 配列へ変換 p h.to_a.to_h # 配列へ変換した上で、さらに、ハッシュに変換する
実行結果
{:ponkiti=>100, :pon=>200} [[:ponkiti, 100], [:pon, 200]] {:ponkiti=>100, :pon=>200}
%記号
文字列や配列を指定する場合に%
記号を使うこともできる。
例1
s = "hello" s = %Q(hello) s = %(hello) # Qは省略可 # Perlのクォート構文みたいな使い方 # カッコ以外の記号も使うことができる s = %Q!hello! s = %Q{hello}
実行結果
どの書き方でも出力内容は同じになる。
"hello"
例2
s = "he\"llo" # "のエスケープには\を使う s = %Q(he"llo)
実行結果
p s
、puts s
でそれぞれ標準出力させた内容は下記のとおり。
"he\"llo" he"llo
例3
s = 'he”\llp' # 文字列をシングルクォーテーションで囲う場合 p s puts s s = %q(he"llo) # 大文字Qではなく、小文字のqを使う p s puts s
実行結果
"he”\\llp" he”\llp "he\"llo" he"llo
例4
a = ["a", "b", "c"] a = %W(a b c) # 文字列の場合のみ、%Wで配列が記述できる a = ['a', 'b', 'c'] a = %w(a b c) # %Qと同様に、シングルクォーテーションの場合は、小文字のwを使う
実行結果
p s
、puts s
でそれぞれ標準出力させた内容は下記のとおり。
["a", "b", "c"] a b c