enjoy Ruby! このページをアンテナに追加 RSSフィード

   papandaのRubyを楽しむ日記。

2006-11-25

プログラミングRuby(言語編)~第3章クラスオブジェクト変数

class Song

def initialize(name)

@name=name

end

end

song=Song.new("papanda")

initializeというメソッドが必要。newされた時に呼ばれる。

なお、Rubyは、クラスの内容を追記するのに、

class Song

def call

p @name

end

end

という書き方ができる(!)

song.call

とすると

papanda

が出力される。


class PapandaSong < Song

def initialize(name)

super(name)

end

end

クラス継承


アクセスメソッドの作成。

class Song

def initialize(name)

@name=name

end

def call

p @name

end

attr_reader :name

attr_writer :name

end

song=Song.new("mimi")

song.call #=>mimiと表示される。

song.name="papanda"

song.call #=>papandaと表示される。


クラスメソッドの定義。

class Song

@@name #クラス変数

def Song.class_method

end

end


RubySingleton

class Demo

private_class_method :new

@@demo=nil

def Demo.create

@@demo = new unless @@demo

@@demo

end

end

アクセス制御

class Demo

def demo1 #デフォルトはpublic

end

protected

def demo2

end

public

def demo3

end

private

def demo4

end

end

もしくは

class Demo

def demo1

end

def demo2

end

def demo3

end

def demo4

end

public :demo1,demo3

protected :demo2

private :demo4

end

ポインタだらけ

panda1 = "mimi"

panda1.class #=>String

panda1 #=>"mimi"

panda2 = panda1

panda2.class #=>String

panda2 #=>"mimi"

panda1[0] = 'M'

panda1 #=>"Mimi"

panda2 #=>"Mimi"

変数リファレンスを保持するため、中身が変わる。

まさにポインタ

irb良いね

さくっと、コードの検証ができるから。

トラックバック - http://rubyist.g.hatena.ne.jp/papanda0806/20061125