クラス
class Sample < SuperClass
attr_reader :count
# コンストラクタ
def initialize
@count = 0
end
# インスタンスメソッド
def count_up
@count += 1
end
# クラスメソッド
def self.dump(sample)
p sample.count
end
# 特異クラス
# この場合はクラスメソッドの追加
class << self
def count_up_twice(sample)
sample.count_up
sample.count_up
end
end
end
obj = Sample.new # インスタンス化
Sample.dump(obj); # 0
Sample.count_up_twice(obj);
Sample.dump(obj); # 2
・クラスは定数。なので大文字開始でなければならない。
privateとprotected
privateの意味は、メソッドを関数形式でだけ呼び出せるようにし、 レシーバー形式では呼び出せないようにするという意味です。
class Foo
def test
print "hello\n"
end
private :test
end
http://www.ruby-lang.org/ja/man/html/FAQ_A...
レシーバ?コンテキストのことかな?ようするにprivateは定義内でしか呼び出せないということか。
protectedにするとレシーバーを指定できる。これは同じクラスであれば外からでも呼び出しが可能になることを意味する。
Rubyでは、C++やJavaのprivateと異なり、サブクラスからでもスーパークラスのprivateメソッドを呼ぶことができる。
Rubyにおけるprotectedとprivateの違いは、レシーバが付けられるかどうかであり、サブクラスから呼べるかどうかではない。
privateメソッドにはレシーバを付けられないので、同じクラスの別のインスタンスのprivateメソッドは呼べない。このような場合にprotectedを使用する。
変数
@hoge # インスタンス変数
@@hoge # クラス変数
$hoge # グローバル変数
正規表現
\A 文字列の先頭(改行関係なし)
\z 文字列の末尾(改行関係なし)
# コメント
PHPとの比較
http://arika.org/doc/php-ruby