Ruby 文法

0pt

クラス

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_A5E1A5BDA5C3A5C9.html#a5.2e5.20private.a4.c8protected.a4.ce.b0.e3.a4.a4.a4.ac.ca.ac.a4.ab.a4.ea.a4.de.a4.bb.a4.f3


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

「Ruby 文法」について友人に書いてもらう。

あなたにとって「Ruby 文法」とは?

ログインするとワンクリックでキーワードを投稿できます

ログインする 新規登録する

他の人の「Ruby 文法」を見る