Ruby 文法の履歴
クラス
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
レシーバ?コンテキストのことかな?ようするに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