`
Jan
  • 浏览: 159618 次
  • 性别: 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): 内核与对象...
分享到:
评论

相关推荐

    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获取源代码: 并按照...

    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编程语言

    《Ruby编程语言》详细介绍了Ruby1.8和1.9版本各方面的内容。在对Ruby进行了简要的综述之后,《Ruby编程语言》详细介绍了以下内容:Ruby的句法和语法结构,数据结构和对象,表达式和操作符,语句和控制结构,方法、...

    em-http-request:异步HTTP客户端(EventMachine + Ruby)

    Rubinius,JRuby,MRI入门gem install em-http-request介绍扩展名一些更高阶的Ruby项目已经合并了em-http和其他Ruby HTTP客户端: 便利类和基元的集合,以帮助解开事件代码(Ruby 1.9 + Fibers)。 -将Rack API用于...

    ruby语法基础教程

    §12.3.2 使用Method类和UnboundMethod类 86 §12.3.3 使用eval方法 88 §12.3.4 性能 88 §12.4 Hook和回调方法 89 §12.4.1 什么是Hook 89 §12.4.2 Ruby中的Hook 89 §11.4.2 回调方法 90 §12.5 跟踪程序的运行 ...

    rpam-ruby19:Ruby 的 PAM 身份验证 - 1.9 兼容版本

    特点/问题: 用户应该知道,在使用影子密码的系统上,当前用户以外的用户身份验证将失败,除非 a) 以 root 身份执行身份验证的 Ruby 代码,或者,b) /sbin/unix_chkpwd 是 suid root(或 sgid shadow)。 在某些发行...

    cm15:允许使用 ruby​​ 与您的 cm15 domotic 模块通话

    CM15 **注意它不是一个稳定的库。 仅用于测试CM15** ...适用于 Ruby 1.9 使用示例: bedroom_lamp = Cm15 :: Components :: Lamp . new :C , 1 bedroom_lamp . light_on 贡献者 凯文·迪斯内尔

    interface:ruby 中的可实现接口

    Ruby 1.9+用法 只需使用您希望其实现对象定义的任何方法创建一个模块module RemoteControl # turns the device on def on end # turns the device off def off endend然后在您的类中使用implements方法(也别名为...

    puppet-confinelibs:基于库(Gems)限制木偶提供程序

    Ruby 1.9+ JSON样式 confine libs: "simple-graphite" 多个库 confine :libs =&gt; ["openstack", "slackcat"] 相当于: confine :libs =&gt; "openstack" confine :libs =&gt; "slackcat" 相当于: conf

    regexp_parser:Ruby的正则表达式解析器库

    生成“对象”表达式树(OO API)的解析器在Ruby 2.x,3.x和JRuby运行时上运行识别Ruby 1.8、1.9、2.x和3.x正则表达式有关正在使用的regexp_parser的示例,请参见。要求Ruby&gt; = 2.0 Ragel&gt; = 6.0,但仅当您要构建...

    tmail:https:github.comlivebgtmail的克隆

    Ruby 1.9兼容性 注意…从1.2.5版本开始,TMail与Ruby 1.9.1不兼容。 为了实现1.9.1 +兼容性,建议您查看Mail( )。 在Rails 3.0及更高版本中,ActionMailer使用Mail,并且可以处理您的电子邮件发送和解析需求。 ...

    govuk-puppet, 用于置备主 GOV.UK web堆栈的Puppet 清单.zip

    govuk-puppet, 用于置备主 GOV.UK web堆栈的Puppet 清单 GOV.UK Puppet这里...的Puppet 模块和清单正在启动为了运行/测试 Puppet 清单,需要 ruby 1.9. x 和 Bundler 。依赖关系由和图书管理员puppet管理,但希望这应该

    modular_framework:模块化或关键字驱动的框架

    该项目用于演示 Ruby 中测试自动化的模块或关键字框架模式 使用说明 安装 Ruby(1.9 或更高版本) 宝石安装Cucumber 宝石安装捆绑器 检查项目 从项目根文件夹,“捆绑执行Cucumber功能” 已知的问题 Hooks.rb 代码...

    mojibake:使用反向映射表恢复mojibake文本

    Mojibake映射的生成需要ruby 1.9中的String编码支持,如下所示: Ruby&gt; = 1.9.2(经过测试的1.9.2p290、1.9.3p392、2.0.0p247 Linux) jruby〜&gt; 1.6.5或〜&gt; 1.7.5(经过测试的1.6.8、1.7.5 Linux) rubinius&gt; = ...

    govuk-puppet:用于供应主GOV.UK Web堆栈的清单

    为了运行/测试Puppet清单,您将需要Ruby 1.9.x和Bundler。 依赖关系通过和进行管理,但希望这应该是透明的,除非您需要自己更新依赖关系。 标准品 在添加到此存储库之前,请先熟悉我们的Puppet标准: 在检入之前,...

    dtf:Deryl 的测试框架 - DTF Master gem。 Verification Suite 分析案例案例测试和启动程序脚本的数据库模式。 _all_ DTF 子模块 gem 的要求

    DTF 旨在成为一个模块化框架,用于测试从 shell 脚本到 Ruby 再到 Rails 应用程序的所有内容。 DTF 是一个保护伞,旨在包含多个子 gem,每个子 gem 都为 DTF 提供附加功能。 DTF 是集成所有其他 dtf-* gem 的主骨架...

Global site tag (gtag.js) - Google Analytics