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?