self指的就是我們物件本身
舉例說明,假設我們有一個class Foo:
class Foo
def self.foo
"class method"
end
def foo
"instance method"
end
def foobar
self.foo
end
end
我們可以用class呼叫method,self現在是Foo class:
Foo.foo # => "class method"
或是讓Foo class生成一個實例,再用實例呼叫method:
# 產生Foo class 的 object
f = Foo.new # => #<Foo:0x007fd103969840>
f.foo # => "instance method"
# foobar method 裡面的 self 就是 f 這個實例
f.foobar # => "instance method"
此章節建議搭配instance method / class method和instance variable / class variable一起觀看。