Top > Ruby [2.2.2] > class


class

★★ class ★★

class RoboSutsu
  # コンストラクタ
  def initialize(pname=nil)
    @name = pname
  end

  attr_accessor :name

  def set(pname)
    @name = pname
  end
end

★★ 上のクラスをリストに持つクラスの宣言 ★★

class SiroBase
  # コンストラクタ
  def initialize(pname=nil, pindx=0)
    @list = Array.new
    @indx = pindx
  end

  attr_accessor :list, :indx

  # リスト追加
  def add(mobile=nil)
    if mobile != nil
      @list.push(mobile)
      @indx+=1
    end
  end

  # インデックス指定検索
  def [](n)
    @list[n]
  end
end


★★ 保存する配列 ★★

sutsu = ["acha" , "porute" , "piipo"]

base = SiroBase.new()   # リストクラスを生成

sutsu.each do |name|
  mobiru = RoboSutsu.new
  mobiru.set(name)
  base.add(mobiru)
end

base.list.each do |sutsu|
  p sutsu.name
end                     # "acha"
                        # "porute"
                        # "piipo"

p base[2].name          # "piipo"

p base[5].name          # undefined method `name' for nil:NilClass (NoMethodError)

わざわざ配列にクラスを持つクラスです。
配列で無くてハッシュの方が便利そうです。とりあえず、classの例ということで。。

アクセサ:メンバのアクセスの仕方を設定としては以下があります。
attr_reader  :読み取り
attr_writer  :書き込み
attr_accessor :読み書き両方



Copyright © 2015 AchaPorutePiipo All Rights Reserved.