`
yoast
  • 浏览: 747 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

ruby对象理解

阅读更多

 

ruby中一切皆对象。

对象本质乃一内存片段之存在,由其子片段之类型、长度、顺序来表征。子片段取值各异,则对象各异。对象之方法定义了对内存片段中每个子片段可运用的运算集合。所以说对象是带有函数的数据。方法只需要用@offset来引用子片段(属性),无需知道名称,名称只是给人辨识的。

对象从何而存在?如何在内存中创建特定的类型、长度和顺序?此种信息即包含在类定义中。类也是对象,它通过对象的内存布局信息(对象模型)来分配内存(new方法),然后让对象自己用initialize方法填写子片段的值。虽然class XXX是一个大写的名字,但是这只是表明XXX是一个常量引用,其实它就是引用到了一个类对象。虽然类的实例叫对象,但既然类也是对象,这里为了区别起见,把对象和类分别叫做实例对象和工厂对象,因为类的表现就跟工厂方法一样。实例对象的class属性记录它是被哪个工厂对象造出来的。工厂对象自己又是被上层对象创造出来的,这个对象叫Class,它的产品都是工厂对象。工厂还知道自己定义的方法都是哪些,哪些是未定义的,方法的可访问性等。

class C; end

a=C.new

#[a,a.class,C.class,C.class.new,C.class.new.new].each {|x| p x,x.methods.sort!}          第一个和最后一个是实例对象,其他都是工厂对象

p a.methods.sort!

p a.methods-C.class.new.new.methods

p C.class.methods-a.class.methods

p a.class.methods-C.class.new.methods

p C.class.methods-a.methods

 

打印结果如下:

 

[:!, :!=, :!~, :==, :===, :=~, :__id__, :__send__, :class, :clone, :define_singleton_method, :display, :dup, :enum_for, :eql?, :equal?, :extend, :freeze, :frozen?, :gem, :hash, :inspect, :instance_eval, :instance_exec, :instance_of?, :instance_variable_defined?, :instance_variable_get, :instance_variable_set, :instance_variables, :is_a?, :kind_of?, :method, :methods, :nil?, :object_id, :private_methods, :protected_methods, :public_method, :public_methods, :public_send, :respond_to?, :send, :singleton_methods, :taint, :tainted?, :tap, :to_enum, :to_s, :trust, :untaint, :untrust, :untrusted?]  表明基对象的方法,注意id、send、很多的比较操作符、hash等。

[]  说明无新的方法

[:nesting] Class对象的方法比普通的工厂对象多一个nesting

[]  这2个工厂对象也是一样的

[:nesting, :constants, :allocate, :new, :superclass, :<=>, :<, :<=, :>, :>=, :included_modules, :include?, :name, :ancestors, :instance_methods, :public_instance_methods, :protected_instance_methods, :private_instance_methods, :const_get, :const_set, :const_defined?, :const_missing, :class_variables, :remove_class_variable, :class_variable_get, :class_variable_set, :class_variable_defined?, :module_exec, :class_exec, :module_eval, :class_eval, :method_defined?, :public_method_defined?, :private_method_defined?, :protected_method_defined?, :public_class_method, :private_class_method, :autoload, :autoload?, :instance_method, :public_instance_method]  表明工厂对象比实例对象多很多元信息


不对理解正确性负责!
0
0
分享到:
评论

相关推荐

    Ruby 面向对象设计实践--2013年

    通过学习这些案例,读者可以更好地理解面向对象编程的核心理念,并将其应用于自己的项目中。 #### 五、总结 《Ruby面向对象设计实践》是一本值得所有Ruby开发者阅读的书籍。无论你是初学者还是经验丰富的开发者,...

    Ruby-FastJSONAPI一个用于Ruby对象的快速JSONAPI的序列化器

    Ruby FastJSONAPI 是一个专为Ruby对象设计的高性能JSON:API序列化库。它旨在帮助开发者以简洁、高效的方式将Ruby对象转换为符合JSON:API规范的JSON格式,极大地提高了开发效率和应用程序的性能。 JSON:API是一个...

    Ruby-MongoMapper针对Mongo的一个Ruby对象映射器

    Ruby的MongoMapper库就是为了让开发者能够更自然地在Ruby对象和MongoDB文档之间进行映射,从而简化数据操作。 MongoMapper的设计理念深受ActiveRecord的影响,它是Ruby on Rails框架中的核心组件,但MongoMapper...

    Ruby-Ruby的面向对象的枚举

    在Ruby编程语言中,"面向对象的枚举"是一个重要的概念,它结合了面向对象编程的灵活性和枚举类型的效率。Ruby的枚举通常指的是枚举类(Enum Class),这是一种自定义枚举类型的方法,允许我们创建具有特定行为的枚举...

    Ruby-Kashmir是一个RubyDSL使得序列化和缓存对象易如反掌

    Ruby-Kashmir是一个专门为Ruby开发者设计的Domain Specific Language(DSL),它的主要目标是简化对象的序列化和缓存过程。通过这个库,开发者可以方便地管理和存储他们的数据,提高应用程序的性能,尤其是在处理...

    Ruby 面向对象知识总结

    ### Ruby面向对象知识总结 #### 一、Ruby的面向对象特性 **Ruby**是一种完全面向对象的编程语言,这意味着在Ruby中,一切事物都是对象。...理解这些基础是非常重要的,因为它们是更高级Ruby编程的基础。

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

    总而言之,这本书是Ruby编程社区中关于面向对象设计的宝贵资源,它不仅帮助读者理解Ruby语言,更重要的是让读者学会如何在实践中有效地应用面向对象的设计原则和模式,以提高软件开发的质量和效率。

    Ruby教程面向对象脚本语言

    1. 面向对象:Ruby的核心设计就是面向对象,几乎一切皆对象,这使得代码更加简洁和易于理解。 2. 动态性:Ruby支持动态类型,变量的类型在运行时自动确定,允许高度的灵活性。 3. 易读性:Ruby语法清晰,强调可读性...

    Practical Object Oriented Design in Ruby 新版 实战ruby面向对象设计

    《Practical Object-Oriented Design in Ruby 新版 实战ruby面向对象设计》是一本非常受欢迎的编程书籍,它不仅是学习Ruby语言的重要参考资料,也是深入理解面向对象编程(OOP)技术不可或缺的宝贵资料。这本书由于...

    Ruby 小白入门指南理解 Ruby 及其特点.txt

    Ruby 是一种简单快捷的面向对象脚本语言,由日本人松本行弘(Yukihiro Matsumoto)在20世纪90年代开发。它的语法简洁易懂,让程序员能够快速编写高效的代码。Ruby 的灵感来源于 Perl、Smalltalk、Eiffel、Ada 和 ...

    Ruby-Functo是ruby中的可组合方法对象

    Ruby是一种面向对象的编程语言,以其简洁的语法和强大的功能深受开发者喜爱。在Ruby的世界里,函数式编程的概念也被巧妙地融入其中,这体现在“Functo”这样的库上。标题提到的“Ruby-Functo”就是Ruby中实现可组合...

    ruby元编程.pdf

    书中通过组织和解释Ruby对象模型的概念,帮助读者清晰理解Ruby的继承和混入机制。 2. 闭包(Closures):在Ruby中,闭包是匿名函数的概念,它能够捕获定义时的上下文环境。闭包是元编程中不可或缺的元素,它允许...

    Ruby编程Ruby Programming

    - **面向对象**:几乎所有事物在Ruby中都是对象,包括数字、字符串等基本数据类型。 - **动态性**:Ruby支持运行时修改代码结构,允许开发者在程序运行过程中改变类和方法的行为。 - **元编程能力**:Ruby提供了一种...

    ruby(前途大好的ruby+rains)

    1. **ActiveRecord**:这是Rails中负责数据库交互的部分,它将数据库记录映射为Ruby对象,提供了一种简单、直观的方式来操作数据。 2. **ActiveRecord ORM**:对象关系映射(ORM)使得开发者可以使用Ruby代码操作...

    Ruby-SpreadsheetArchitect可以将任何activerecord关系或ruby对象集合转换成XLSXODS或CSV电子表格

    Ruby-SpreadsheetArchitect是一个强大的库,专门设计用于Ruby开发者,它允许将任何ActiveRecord关系或Ruby对象集合方便地导出为XLSX、ODS或CSV格式的电子表格文件。这个工具对于需要处理大量数据并希望以用户友好的...

    ruby官方chm文档

    Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。本套官方文档包含了关于Ruby核心库、标准库、语言特性和整体框架的详细信息,是学习和深入理解Ruby不可或缺的参考资料。...

    ruby中文教程,从基础到深入的让你学习ruby

    接下来,深入理解Ruby的面向对象特性。Ruby是完全面向对象的语言,一切皆对象。类是对象的模板,对象是类的实例。你可以定义方法,创建继承结构,使用模块(module)来实现代码复用和类别混合(mixin),以及利用元...

    Ruby-一个Ruby的例子

    Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。在这个"Ruby-一个Ruby的例子...通过深入学习和实践这个Ruby例子,你将更好地理解它的语法、面向对象特性和丰富的库支持。

    Best of Ruby Quiz

    《Best of Ruby Quiz》是一本聚焦于Ruby编程语言的精选问答集锦,旨在帮助开发者深入理解和掌握Ruby的各种特性。这本书的描述简洁明了,"Best of Ruby Quiz"直接点出了其核心内容——一系列关于Ruby的精彩挑战和问题...

Global site tag (gtag.js) - Google Analytics