1. 什么是对象?
? ?对象:个包含一些实例变量,并且有一个指向对应类的链接。对象的方法并不存在于对象本身,而是存在于对象所对应的类,也就是类的实例方法
?
class A
def hello
end
end
a = A.new()
puts a.methods == A.instance_methods
#true
?
2. 什么是类?
? ?类:在ruby中类也是一个对象(Class类的一个实例),加上一些实例方法,并且指向Class的父类,Class的父类是Module,所以一个类也是一个module。
?
puts a.class puts A.class puts A.class.superclass puts A.superclass puts A.class.superclass.superclass puts A.class.superclass.superclass.superclass
#A #Class #Object #Module #Object #nil
?
3. 像所有对象一样,一个类也有它的方法,例如 new(),这些方法是Class类的实例方法,类也像所有对象一样,访问类的时候同样需要参数,对于每个类都有一个常量作为参数, 就是类的名字。
?
4. 常量Constant
?
module M
class C
X = "A Constant"
end
puts C::X
end
puts M::C::X
?
?
? 常量的嵌套就像是文件于文件夹的关系,?常数是唯一确定的路径,常量的路径之间用两个冒号相隔
? 同样也可以使用双冒号(::)作为根目录,来确定常量的绝对路径,比如:
?
module N
Y = "Constant"
class B
puts ::N::Y
end
end
?
最后,如果你需要获取当前的常量的路径,可以使用nesting
?
module M
class C
module M1
puts Module.nesting
end
end
end
#M::C::M1
#M::C
#M
?