`
Jan
  • 浏览: 164717 次
  • 性别: Icon_minigender_1
  • 来自: Hangzhou
文章分类
社区版块
存档分类
最新评论

Ruby 1.9 (3): 类和模块

阅读更多
Module#instance_methods, #private_instance_methods, #public_instance_methods

在1.9中返回一个由Symbol构成的数组,而不是String数组

class X; def foo; end; end
X.instance_methods(false) # => [:foo] in 1.9, ["foo"] in 1.8

Module#const_defined?, #const_get

在1.9中可以接受一个额外的参数,指明是否要把父类的const也考虑进来,默认是true

module A; X=1; end
module B; include A; end
B.const_defined? "X" # => true
B.const_defined? "X", false # => false
B.const_get "X", false # uninitialized const exception

#class_variable_set, #class_variable_get

现在是public method了, 1.8里面这个方法是private的

class AA; self; end.class_variable_set(:@aa, "foo") # =>"foo" in 1.9, throw NoMethodError in 1.8

单间类现在是对象的类的子类

很难理解的一个特性,比较

class X; end
x = X.new; class << x; self < X; end # => true in 1.9, nil in 1.8

为了搞清楚单件类(singleton)的概念,可以看看这篇文章先。但是从这篇文章出发,似乎1.8里面上面的片断也应该返回true才对啊?这个改动大概是一个bug fix? 达人指教。

增加Module.module_exec方法

和Object#instance_exec类似

Binding#eval


a = 1
binding.eval("a") # => 1 in 1.9, NoMethodError throws in 1.8

没有采纳的feature:

* Module#method_defined?可以接受第二个参数指明是否把父类的方法包括进来
* Module#class_variable_defined?至少从1.8.6开始就有了
* 使用attr :foo=来定义attr_accessor
* 子类不再能访问类变量

Ruby 1.9 (1): 新语法
Ruby 1.9 (2): 内核与对象...
分享到:
评论

相关推荐

    Programming Ruby 1.9 (3rd edition)和源码

    在这一版中,作者深入浅出地讲解了Ruby 1.9的改进和新特性,旨在帮助开发者更好地理解和利用这个版本的优势。 1. **Ruby 1.9的关键改进**: - 字符串编码:Ruby 1.9引入了对多种字符编码的支持,使得处理多语言...

    Programming Ruby 1.9

    10. **内建类和模块的扩展**:Ruby 1.9对很多内建类和模块进行了扩展和增强,比如`String`、`Array`、`Hash`等,提供了更多便捷的方法。 通过阅读《Programming Ruby 1.9》,读者不仅可以掌握Ruby 1.9的最新特性,...

    Programming Ruby 1.9 The Pragmatic Programmers' Guide

    Ruby 1.9是Ruby的一个重要版本,引入了许多改进和新特性,包括性能优化、新的字符串编码系统、改进的模块和类的加载机制等。 在本书中,读者将学习到以下核心知识点: 1. **基础语法**:了解Ruby的基本数据类型,...

    ruby 1.9 教程

    - **类与其他类的工作方式**: Ruby支持单继承,但也可以通过模块和混合(mix-in)的方式实现多重继承的效果。 - **访问控制**: 如何在Ruby中使用public、protected和private关键字来控制类成员的访问权限。 - **变量**:...

    Programming Ruby 1.9 & 2.0 The Pragmatic Programmers’ Guide 4th Edition

    本书包含四个主要部分:Ruby使用的著名教程、对语言的权威性参考、所有内置类、模块和方法的完整文档,以及所有97个标准库的完整描述。Ruby 2.0是对Ruby 1.9的小幅更新。Ruby 2.0的主要语言变化是增加了关键字参数,...

    (ruby 1.9 开发)Rango

    - **仅支持 Ruby 1.9**:Rango 专门为 Ruby 1.9 设计,利用了 Ruby 1.9 中的新特性和性能提升。 - **代码生成器**:提供了生成器来帮助快速搭建项目结构,但并不强制要求特定的项目结构。 - **代码热加载**:通过...

    Programming Ruby 1.9 (Pragmatic Bookshelf 2009).pdf

    《Programming Ruby 1.9》一书由Dave Thomas、Chad Fowler与Andy Hunt共同编写,是Pragmatic Bookshelf出版的一部权威性指南,旨在帮助读者深入理解和掌握Ruby编程语言的1.9版本。该书不仅是对原版《Programming ...

    Ruby编程语言_涵盖Ruby 1.8和1.9

    其次,Ruby 1.9对语法进行了一些调整,例如,变量声明前的符号从`$`改为`@`或`@@`,以更清晰地区分实例变量和类变量。此外,Ruby 1.9还引入了新的内建数据结构,如Symbol表和Fixnum/Bignum的合并,提高了性能。 ...

    Programming-Ruby-1.9.pdf

    - **类之间的交互**: 类可以通过继承和模块来扩展功能。 - **访问控制**: Ruby提供了public、private和protected等关键字来控制成员的可见性。 - **变量类型**: 包括局部变量、实例变量、类变量和全局变量。 #### ...

    Programming-Ruby-1.9源代码

    2. **对象和类** - 类与对象:Ruby是面向对象的语言,源代码将展示如何定义类、继承、封装和多态性。 - 方法定义与调用:包括实例方法、类方法、私有方法和公有方法的实现。 - 动态特性:Ruby的动态性体现在可以...

    Pragmatic.rogramming.Ruby.1.9.and.2.0.4th.Edition.pdf

    2. **面向对象编程**:Ruby是纯面向对象的语言,书中会详细介绍类、模块、继承、方法、实例变量和类变量等概念。 3. **块、proc和lambda**:这些是Ruby中实现函数式编程的关键,用于定义可复用的代码片段,并可以在...

    Ruby程序设计语言 (涵盖Ruby 1.8和1.9)源代码

    《Ruby程序设计语言》是Ruby的权威指南,全面涵盖该语言的1.8版和1.9版。本书详尽但并不拘泥于语言规范,既适合首次接触Ruby的资深程序员,同样也适合那些想要挑战对这门语言的理解并更深入掌握它的Ruby程序员。本书...

    unicode_utils:Ruby 1.9的Unicode算法

    Unicode Utils-Ruby 1.9的Unicode算法 UnicodeUtils在纯Ruby代码中实现了用于大小写转换,规范化,文本分段等的Unicode算法。安装 使用RubyGems安装: gem install unicode_utils或者从Github获取源代码: 并按照...

    ruby1.9.1文档和一本pdf

    3. **块和 Proc 对象**:Ruby 1.9 中,块可以显式赋值给 Proc 对象,使用`&`操作符,这使得块可以作为参数传递,也可以存储和稍后调用。 4. **模块命名空间**:引入了`Module#using`方法,允许将模块的定义导入到...

    修改的rubyscript2exe

    3. **ruby1.9**: 强调了对Ruby 1.9系列的支持,包括其特有的语法和改进。 4. **ruby1.8.7**: 提示该工具也兼容较旧的Ruby 1.8.7版本,提供对旧项目的后向兼容性。 在压缩包中的`rubyscript2exe.rb`文件很可能是该...

    ruby教程.rar

    内部类/模块/异常类 附加库 Ruby变更记录 ruby 1.6 特性 ruby 1.7 特性 ruby 1.8 特性 1.6.8到1.8.0的变更点(总结) ruby 1.9 特性 obsolete 对应DOSISH 附录 疑似BNF的Ruby语法 Ruby术语集 Ruby的...

    Ruby Under a Microscope An Illustrated Guide to Ruby Internals

    尽管从表面来看,类和模块在Ruby中有着明显的区别,但在语言的底层实现中,它们的结构可能非常相似,这对于理解Ruby内部机制以及如何有效地组织代码都非常重要。 此外,本书涉及了Ruby不同版本(包括Ruby 2.x、1.9...

Global site tag (gtag.js) - Google Analytics