Rubyのインスタンスメソッドなどの整理

rubyわからない。だがしかし、わからなければこの先生き残れない。

今日会社の人にRubyを教えていたのだが、実は自分がわかってないことがわかったので勉強したことをまとめておく。

わからなかったことは以下の3点だ。

  • クラス変数(メソッド)
  • インスタンス変数(メソッド)
  • クラスインスタンス変数(メソッド)

調べたところ、Qiitaで良さげな記事があった。

クラス変数とクラスインスタンス変数

実際に書いてみるとこんな感じだろう。

class Cat

    @@name = "bbbbb" # class variable
    @class_instance_var = "class instance var: cat" # class instance variable

    def initialize
        @name = "aaaaa" # instance variable
    end

    def hoge # instance method
        puts "instance method: hoge"
        puts @name
    end

    def self.hoge # class method
        puts "class method: hoge"
        puts @@name
    end

    def self.say # class instance method
        puts "say: #{@class_instance_var}"
    end
end

class Foo < Cat
    @class_instance_var = "class instance var: foo"
end

meow = Cat.new
meow.hoge # instance method

Cat.hoge # class method

Cat.say # class instance var: cat
Foo.say # class instance var: foo

class methodphp で言うところの static method だろう。

人に教えられる程度には詳しくなっておく必要があるのでちゃんと勉強しておかねば。