Objects Classes and Modules_Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > Objects Classes and Modules

Objects Classes and Modules

 2012/6/1 16:45:38  michael_roshen  程序员俱乐部  我要评论(0)
  • 摘要:1.什么是对象?对象:个包含一些实例变量,并且有一个指向对应类的链接。对象的方法并不存在于对象本身,而是存在于对象所对应的类,也就是类的实例方法classAdefhelloendenda=A.new()putsa.methods==A.instance_methods#true2.什么是类?类:在ruby中类也是一个对象(Class类的一个实例),加上一些实例方法,并且指向Class的父类,Class的父类是Module,所以一个类也是一个module。putsa.classputsA
  • 标签:

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
?
  • 相关文章
发表评论
用户名: 匿名