类的单件方法(类方法)
类可以有单件方法,类的单件方法可以被继承。
class People
def self.kind
"human"
end
end
class Student < People
end
p People.kind # => "human"
p Student.kind # => "human"
对象的单件方法
对象可以有单件方法,只是这个对象本身所有的方法
普通方法
class C
def talk
puts "Hi!"
end
end
c = C.new
c.talk
# Output: Hi!
单件方法定义
obj = Object.new
def obj.talk
puts "Hi!"
end
obj.talk
#377
#Output: Hi!
使用instance_eval()
定义单件方法
s1, s2 = "abc", "def"
s1.instance_eval do
def swoosh!
reverse
end
end
s1.swoosh! # => "cba"
s2.respond_to?(:swoosh!) # => false
instance_eval()
的含义是:“我想修改self”
Every object has two classes:
- The class of which it’s an instance
- Its singleton class