`
bryanzk
  • 浏览: 57717 次
文章分类
社区版块
存档分类
最新评论

理解ruby核心概念:Object, Class, Module, Kernel

阅读更多
        作为一个Ruby初学者,最让我感到头痛的就是ProcClassModuleKernelObject这几者之间的关系,如果能把他们搞懂,并且可以玩弄于股掌之间的话,感觉这样才算是真正进了Ruby的大门。本文记录我在学习并感受这几个类时的点点滴滴。
  • 关于Class

         Class的官方文档urlhttp://corelib.rubyonrails.org/classes/Class.html

(虽然《Programming Ruby 中文版第二版》翻译的已经算是不错了,但是在后面内置类库的一些译法上,我认为有可商榷之处。当我遇到书中有些话不能理解的时候,我会直接到ruby的网站上去看官方的英文文档。)

    •  Parent: Module

说明:请注意,ClassModule的子类。

irb中运行:

Class.ancestors

输出:

=> [Class, Module, Object, Kernel]

运行:

Module.ancestors

输出:

=> [Module, Object, Kernel]

运行:

Object.ancestors

输出:

=> [Object, Kernel]

运行:

Kernel.ancestors

输出:

=> [Kernel]

 

  • 其中Class, Module, Object 都是class,KernelModule
  • Object mixes in the Kernel module, making the built-in kernel functions globally accessible. Although the instance methods of Object are defined by the Kernel module, we have chosen to document them here for clarity.
  • Object混入了Kernel这个模块,又由于ObjectRuby中所有类的父类,这样以来,Kernel中内建的核心函数就可以被Ruby中所有的类和对象访问。
  • Object的实例方法由Kernel模块定义。
  • Kernel模块中定义了private methodpublic method
    • 对于一个普通的对象,可以直接调用Kernelpublic 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?"]

  •  而要想调用一个普通对象所包含的Kernel的函数,用一般的调用方法无法做到,只有通过Send来实现:

 



小熊bryan 2007-08-07 13:05 发表评论
分享到:
评论
1 楼 bom_d_van 2010-12-03  
接着理解。。。

相关推荐

    Ruby on Rails:MVC架构理解.docx

    Ruby on Rails:MVC架构理解.docx

    Ruby语言教程:Ruby 变量示例

    ### Ruby语言教程:深入解析Ruby变量类型 #### 一、引言 在编程语言中,变量扮演着极其重要的角色,它们用于存储数据并在程序运行过程中对其进行操作。Ruby 作为一种动态类型的脚本语言,提供了多种变量类型,使得...

    Ruby on Rails: the scope method

    ### Ruby on Rails: The Scope Method 在Ruby on Rails框架中,`scope`方法是一个非常强大的工具,用于定义数据库查询的预设条件,从而简化代码并提高可读性和可维护性。下面将详细介绍`scope`方法的基本概念、用法...

    Ruby on Rails: Up and Running

    2. **Rails框架概念**:Rails的核心设计理念是DRY(Don't Repeat Yourself)和Convention Over Configuration,旨在减少重复代码并提供一套默认的最佳实践。Rails中的关键组件包括模型(Model)、视图(View)和控制...

    Ruby Meta Programming: define_method or class_eval

    `define_method`和`class_eval`是Ruby元编程中的两个关键方法,它们被广泛用于动态地添加方法到类或者模块中。这篇文章将深入探讨这两个方法的用法和区别。 `define_method`方法允许我们传递一个符号和一个代码块来...

    Ruby与JSON:无缝数据交换的秘诀

    Ruby的`json`模块提供了`JSON.parse`和`JSON.generate`两个核心方法,分别用于解析JSON字符串和生成JSON格式的字符串。 #### 解析JSON ```ruby require 'json' json_string = '{"name": "John", "age": 30, "city...

    Ruby经典系列: exceptional ruby

    Ruby语言中异常处理是确保程序稳定运行的重要组成部分。在Ruby经典系列书籍《Exceptional Ruby》中,作者详细探讨了在Ruby代码中如何有效地处理异常,以及如何设计健壮的错误处理策略。 首先,了解“失败”的概念...

    Ruby入门教程:只需20分钟,你将了解到ruby语言的基础知识

    本教程涵盖了Ruby语言的基本概念和技术要点,包括安装、IRB的使用、基本的数据类型、变量、方法、字符串处理以及面向对象编程。通过这些基础知识的学习,读者可以快速入门Ruby编程,并为进一步深入学习打下坚实的...

    Ruby语言教程:从基础知识到高级特性的全面指南

    接着详细讲解了Ruby的基础语法,如变量、数据类型、运算符、控制流等,并深入探讨了面向对象编程的关键概念,包括类、对象、继承、封装和多态。随后介绍了Ruby的一些高级特性,如模块、异常处理、迭代器和文件I/O...

    ruby-ddp:太简单的数据打印机

    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 -...

    Ruby语言教程:基础知识、面向对象编程及Web开发

    内容概要:本文是一份详尽的Ruby语言教程,从Ruby的基本概述入手,介绍了其主要特点、环境搭建、基础语法、面向对象编程概念、高级特性和Web开发框架Rails的应用。主要内容包括:Ruby的特点、安装方法、变量和数据...

    Ruby脚本编程:动态语言的魅力与实用指南

    本文将深入探讨Ruby脚本的概念、特点,并提供实际的代码示例来展示其实用性。 Ruby脚本是一种灵活、强大且表达力丰富的编程语言。它以其简洁的语法、动态类型系统和面向对象的特性而受到开发者的喜爱。Ruby的块、...

    Ruby-OhmRedis的Objecthash映射库

    Ohm的核心概念包括模型(Model)、键(Key)和集合(Set)。模型是Ruby类,它们继承自Ohm::Model,并定义了与Redis关联的属性。每个模型都可以有自己的键,这是一组由Ohm自动生成的Redis命令,用于管理模型实例的...

    ruby-enum:在Ruby中定义枚举的便捷方法

    class OrderState include Ruby :: Enum define :CREATED , 'created' define :PAID , 'paid'end OrderState :: CREATED # 'created'OrderState :: PAID # 'paid'OrderState :: UNKNOWN # raises Ruby::Enum::...

    Beginning.Ruby.From.Novice.to.Professional.3rd.Edition.1484212797

    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...

    ruby程序:ruby selenium Web驱动程序

    在"ruby-selenium-webdriver-master1"这个项目中,可能包含了示例代码、测试脚本以及相关的说明文档,这些可以帮助你更好地理解和实践Ruby Selenium Web驱动程序的用法。你可以通过阅读源码和运行测试来进一步学习。...

    Ruby-rufusschedulerRuby作业定时调度程序

    Ruby-rufusscheduler是Ruby语言中的一个强大的作业定时调度库,它允许开发者在特定时间或按照预设周期执行任务。这个库,名为rufus-scheduler,为Ruby开发者提供了灵活和可靠的计划任务功能,适用于各种场景,如定期...

    ruby面向对象设计 Practical Object-Oriented Design in Ruby

    面向对象设计是计算机科学中的一个核心概念,它是一种通过创建对象、类以及对象间的方法来设计软件的编程范式。这种设计方式允许程序员对现实世界中的问题进行建模,将现实世界中的实体转换成软件世界中的对象。面向...

    Ruby语言入门教程:从安装到编写

    ### Ruby语言入门教程:从安装到编写 #### 一、Ruby简介 Ruby是一种简洁、高效的面向对象编程语言,由日本人松本行弘(Yukihiro Matsumoto)于1995年设计并开发。其设计理念强调程序员的幸福感,追求代码的可读性...

Global site tag (gtag.js) - Google Analytics