打开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?"]
分享到:
相关推荐
### Ruby语言介绍与基础知识 #### 一、Ruby语言概述 **1.1 Ruby的历史** Ruby是一种面向对象的脚本语言,由日本人松本行弘(Matsumoto Yukihiro)于1993年开始开发。起初,Ruby是作为一种兴趣项目而诞生的,但...
Ruby有一些特殊的类和方法,如`Object`类是所有类的基类,`Kernel`类包含常用的基本函数。 **3.5 类变量与类方法** 类变量以`@@`开头,可在所有实例间共享;类方法则使用`self`关键字定义: ```ruby class ...
### RUBY基础入门指南 #### 一、Ruby语言概述 **1.1 Ruby的历史** Ruby是一种面向对象的脚本语言,由日本人松本行弘(Yukihiro Matsumoto)于1995年开始开发。它结合了Perl的灵活性、Smalltalk的强大功能以及Ada...
不包含 实施Module#uninclude和Object#unextend 经过测试的Ruby版本 ... ancestors # => [Foo, Bar, Object, Kernel, BasicObject] Foo . class_eval { uninclude Bar } p Foo . ancestors # => [Foo,
§1.18 Module 104 §1.19 NilClass 104 §1.20 Numeric 104 §1.21 Object 104 §1.22 Proc 105 §1.23 Process::Status 105 §1.24 Range 105 §1.25 Regexp 105 §1.26 String 105 §1.27 Struct 105 §1.28 ...
- **Lists of Methods:** The book provides comprehensive lists of methods available in the Object, String, Array, and Hash classes and the Kernel module. These lists are invaluable for understanding ...
7. **反射API**:`ObjectSpace`、`Kernel::caller`、`Method`、`Proc`等类提供了对运行时对象和方法的深入洞察,帮助开发者了解和操控程序的内部状态。 8. **Metaclasses**:每个Ruby对象都有一个元类,用于存储...
##### §11.1 使用Kernel模块处理I/O操作 - **读写文件**:通过`File.open`打开文件,`puts`写入内容等。 ##### §11.2 文件处理 - **文件操作**:`File.read`、`File.write`等方法。 ##### §11.3 StringIO - **...
在Ruby编程语言中,模块(Module)是一个重要的概念,它在代码组织和功能复用方面起到了关键作用。在《Ruby基础教程(第四版)》的第8章中,我们探讨了模块的基本特性以及如何利用模块来扩展类的功能。 首先,模块...
class TestModule def piyo # ... end end dp %w[ 100 101 102 ] dp test : 1000 dp TestModule . method ( :instance_method ) dp TestModule . instance_method ( :piyo ) 运行 ruby 脚本: $ ruby -...
- `Comparable`和`Kernel`出现在`String`的祖先链中是因为`String`继承自`Object`,而`Object`包含了这些模块。 #### 十、总结 通过本文的学习,我们了解了Ruby面向对象编程中类与方法的基本概念,包括类的定义、...