「ruby/サンプル/Ruby1.8 1.9 構造体のようなクラスを簡単に作るクラス「Struct」」の編集履歴(バックアップ)一覧はこちら

ruby/サンプル/Ruby1.8 1.9 構造体のようなクラスを簡単に作るクラス「Struct」」(2013/01/26 (土) 15:59:33) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

* ruby/サンプル/Ruby1.8 1.9 構造体のようなクラスを簡単に作るクラス「Struct」 * サンプルソース #highlight(ruby){{ # Ruby1.8 1.9 構造体のようなクラスを簡単に作るクラス「Struct」 # 使い方1.構造体クラスを作成 # 例:名前、メールアドレス、年齢をメンバに持つ構造体クラス「Member」を作成 # 第一引数をクラス名、第二引数以降をメンバ名を表すシンボル(:~)を付けるとよいです # クラス名は大文字から始まらないとエラーです Member = Struct.new("Member", :name, :email, :age) # 使い方2.構造体オブジェクトを作成 # パラメータ指定なしなら全てのメンバがnilになります member1 = Member.new # パラメータを与えると、メンバに設定されます # パラメータが多すぎるとエラーです。少ないと足りない分はnilです member2 = Member.new("HOGE", "hoge@example.com", 81) member3 = Member["good", "good@example.com", 99] # 使い方3.メンバへのアクセス # 例1.~.メンバ名 member1.name = "HOGE" member1.email = "hoge@example.com" member1.age = 81 p member1.name # HOGE # 例2.~[0] 構造体クラス作成時のパラメータ順にアクセスできます p member1[0] # HOGE p member1[1] # hoge@example.com p member1[2] # 81 # 例3.~["メンバ名"] メンバ名を添字としてもアクセスできます。連想配列みたい p member1["name"] # HOGE # その他 # メンバの配列を取得 p member1.to_a # ["HOGE", "hoge@example.com", 81] p member1.values # ["HOGE", "hoge@example.com", 81] # 全メンバに繰り返しアクセス member1.each { |obj| p obj # MOGE moge@example.com 11の順に出力 } # メンバ名の配列を取得 p Member.members # name email age # 構造体同士の比較 # 同じクラス、同じメンバならtrueになります p member1 == member2 # true p member1.eql?(member2) # true a = Array.new a << Member.new("333", "111@example.com", 11); a << Member.new("222", "222@example.com", 21); a << Member.new("111", "333@example.com", 11); a << Member.new("444", "444@example.com", 41); a << Member.new("555", "555@example.com", 11); # 構造体配列のソート # 参考 # Rubyでオブジェクトを要素とする配列をソートする際の覚え。 - Dragonmasterの日記 # http://d.hatena.ne.jp/kx8k-hgc/20071128/1196234187 # nameでソート(単項目ソート b = a.sort{|aa, bb| aa.name <=> bb.name } puts b puts "---" # age nameでソート(複数項目でソート c = a.sort{|aa, bb| if aa.age == bb.age aa.name <=> bb.name else aa.age <=> bb.age end } puts c # Structはなかなか便利そう # Rubyのソートが超カンタンで驚いた }} - サンプルと言うよりは単なるメモです - メンバ名を指定するだけで構造体を作れるとか面白い - 構造体配列のソートがとても簡単に作れるのもすごいねRuby - Dragonmasterさんのこの記事にも感謝「http://d.hatena.ne.jp/kx8k-hgc/20071128/1196234187」 * コメント #pcomment(reply)

表示オプション

横に並べて表示:
変化行の前後のみ表示: