打开irb:
puts ‘abc’.class ==> String
puts String.class ==> Class
puts Class.class ==> Class
以上说明 所有的字符串都是 String类的实例,而 String类 是 Class类的实例
Class.superclass ==> Module
Module.superclass ==> Object
Object.superclass ==> nil
以上说明: Class类继承了Module类,Module类继承了Object类,Object类是所有类的祖先
Class.class ==> class
Module.class ==> class
Object.class ==> class
Kernel.class ==> Module
以上说明:由于Class, Module, Object 都是class,而Kernel是Module
Class.ancdstors ==> [Class,Module,Object,Kernel]
Module.ancestors ==> [Module,Object,Kernel]
Object.ancestors ==> [Object,Kernel]
Kernel.ancestors ==> [Kernel]
以上说明:
因为Object混入了Kernel这个模块,又由于Object是Ruby中所有类的父类,这样以来,Kernel中内建的核心函数就可以被Ruby中所有的类和对象访问。
Object的实例方法由Kernel模块定义。
Kernel模块中定义了private method和public method
对于一个普通的对象,可以直接调用Kernel的public method
在irb中运行: a=Object.new
输出:=> #<Object:0x2ee9470>
运行: a.public_methods
=> ["inspect", "clone", "public_methods", "display", "instance_variable_defined?", "equal?", "freeze", "methods", "respond_to?", "dup", "to_yaml_style",
"instance_variables", "__id__", "method", "eql?", "id", "singleton_methods", "send", "taint", "to_yaml_properties", "frozen?", "instance_variable_get", "__send__", "instance_of?", "to_a", "to_yaml", "type", "protected_methods", "instance_eval", "object_id", "require_gem", "==", "require", "===", "taguri", "instance_variable_set", "kind_of?", "extend", "gem", "to_s", "taguri=", "hash", "class", "private_methods", "=~", "tainted?", "untaint", "nil?", "is_a?"]
分享到:
相关推荐
Understanding Ruby's Object Model 简体中文
ruby面向对象设计 英文版 高清 ruby面向对象设计 英文版 高清
本文主要给大家介绍了在Ruby中 module_function 和 extend self的共同点和区别,非常的详细,也很实用,方便大家更好的理解的module_function 和 extend self
Ruby Cookbook: Recipes for Object-Oriented Scripting Why spend time on coding problems that others have already solved when you could be making real progress on your Ruby project? This updated ...
ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码
Mongoid - MongoDB的Ruby ODM(Object-Document-Mapper) 框架
Lists of methods from the Object, String, Array, and Hash classes and the Kernel module sprintf andtime formatting directories Interactive Ruby (irb) and the Ruby debugger Ruby documentation
Learn the principles behind object-oriented programming and within a few chapters create a fully functional Ruby application. You'll also gain a basic understanding of many ancillary technologies such...
module ActiveRecord class Base extend AbstractClass end end 任何初始化或分配抽象类实例的尝试都会引发AbstractClass::Error 。 ActiveRecord :: Base . new #=> AbstractClass::Error - abstract class ...
Ohm - Redis的Object-hash映射库
ruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ...
不包含 实施Module#uninclude和Object#unextend 经过测试的Ruby版本 ... ancestors # => [Foo, Bar, Object, Kernel, BasicObject] Foo . class_eval { uninclude Bar } p Foo . ancestors # => [Foo,
Ruby is a fully object-oriented language, much like the classic object-oriented language, Smalltalk. Like Smalltalk, it is dynamically typed (as opposed to Java or C++), but unlike Smalltalk, ...
二、在class或module的定义中: 在class和module的定义中,self代表这个class或这module对象: Ruby代码 class S puts ‘Just started class S’ puts self module M puts ‘Nested module S::
官方离线安装包,亲测可用
amazon畅销书排行第一名,无论是学习ruby,还是学习面向对象技术,这本书都是非常不错的资料,值得细细品味。 内容非常好,有图、有介绍、有代码,对面向对象的解释非常详细。
《Ruby完全自学手册》是一本完全覆盖Ruby和Ruby on Rails的完全自学手册。《Ruby完全自学手册》的特色是由浅入深、循序渐进,注重理论和实践的结合。虽然定位为入门手册,但是依然涉及许多高级技术和应用,覆盖到的...
ruby2ruby 提供一些用来根据 RubyParser 兼容的 Sexps 轻松生成纯 Ruby 代码的方法。可在 Ruby 中轻松实现动态语言处理。 标签:ruby2ruby
ruby源代码 ruby源代码 ruby源代码 ruby源代码2