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

   papandaのRubyを楽しむ日記。

2006-09-02

たのしいRuby(4)~オブジェクト指向言語Ruby

繰り返し

たのしいRubyの第6章。


4.times { |i|

print i,"回目\n"

}


この場合、iにループ回数が代入されますよと。

このtimesには慣れましたが、新たに||が出現。

これも今までにはな記法です。

names = ["ito","sato","yamada"]

names.each {|name|

print name,"\n"

}


オブジェクトの集まりに対しても適用可能。

次。


break
next
redo

繰り返しの制御です。break,nextはわかる。

redoって?!

これは、nextと対比させると理解しやすい。


["ito","sato","yamada"].each {|name|

i += 1

if i == 2

next

end

p [i,name]

}


★結果

[1,"ito"]

[3,"yamada"]

これは納得。


["ito","sato","yamada"].each {|name|

i += 1

if i == 2

redo

end

p [i,name]

}


★結果

[1,"ito"]

[3,"sato"]

[4,"yamada"]

要素はすべて出力します。もう一度同じ繰り返しを行うわけですね。

続いては、第7章。

メソッド

return文は省略可能ですと。

その場合は、そのメソッドの中で最後に得られる値が返り値となる。


def hello(name)

"helllo " + name #return文不要

end

次、第8章。


クラスモジュール

initializeメソッド。

ruby言語でのコンストラクタですね。


アクセスメソッド。

getter、setterは定義があって、一文で済む。驚き。


attr_reader :name #=> 参照のみ可能にする。getter

attr_writer :name #=> 変更のみ可能にする。setter

attr_accesstor :name #=> 参照・変更の両方を可能にする。getter/setterを同時に定義


クラスメソッドの書き方。

def クラス名.メッソド名 ~ end

class << クラス名 ~ def メソッド名 ~ end end

class クラス名 ~ def self.メソッド名 ~ end end


なに、②の書き方。意味不明

rubyはやっぱり凄い。既に定義済みのクラスにしれっとメソッドを追加できるとのこと。


定数。

クラス名::定数名」で参照可能。::という新しい記号が出てきた。


クラス変数

@@で始める変数


Mix-inという機能で、クラスとは別に定義したメソッドを追加できるとのこと。


module Hoge

end


class Foo

include Hoge

end


class Bar

include Hoge

end


これで、Foo/Barの両方で、共通の機能のHogeが使えると。

クラス継承とは似て非なるものですね。

RubyJava同様多重継承できないために、この仕様があるようです。

次は、第9章

例外処理

例外処理の書き方。


begin

文(例外が起きる可能性のある処理)

rescue

文(例外が起きた場合の処理。)

ensure

文(例外の有無にかかわらず処理。finallyですね)

end


rescueを複数書けば、複数の例外に対処可能です、と。

というわけで、第1部完了~。

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