ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Ruby 2.0 Preview 1发布

Ruby 2.0 Preview 1发布

原创 Linux操作系统 作者:jieforest 时间:2012-11-29 13:04:58 0 删除 编辑
Ruby 2.0的发布经理Yusuke Endoh宣布了如下几件事:Ruby 2.0.0的直接特性已经冻结,Preview 1发布,正式版的发布日期是2013年2月24日。届时正是Ruby的20周年纪念日,因此2.0版本选择这个时间发布也非常合适。

新特性的总结可以在Ruby的NEWS文件及其问题跟踪系统中找到。所有特性之中,Keyword Argument(关键字参数)和Refinement对Ruby程序员的影响是最大的:

Keyword Argument

不同于仅仅传递一个哈希值作为方法参数,Ruby 2.0将完全支持关键字参数。下面是选自Ruby自身单元测试程序的一个代码片段:

CODE:

def f1(str: "foo", num: 424242)
  [str, num]
end

def test_f1
  assert_equal(["foo", 424242], f1)
  assert_equal(["bar", 424242], f1(str: "bar"))
  assert_equal(["foo", 111111], f1(num: 111111))
  assert_equal(["bar", 111111], f1(str: "bar", num: 111111))
  assert_raise(ArgumentError) { f1(str: "bar", check: true) }
  assert_raise(ArgumentError) { f1("string") }
end 注意该特性只能用于有默认值的参数。关于新语法的更多例子以及新语法如何使用传统参数,请参考Ruby的单元测试。

Refinement

refinement的目标是通过减少补丁的应用范围使打动态补丁(monkey patching)更为安全。下面是由Matz给出的一个例子,MathN模块包含进来之后“/”操作符才能在Fixnum上使用:

CODE:

module MathN
  refine Fixnum do
    def /(other) quo(other) end
  end
end

class Foo
  using MathN

  def foo
    p 1 / 2
  end
endYehuda Katz写了一篇详细的博客文章来介绍如何将Refinement应用于实践之中。Refinement目前已包含在Ruby 2.0分支中,但仍然可能因性能问题而被踢除(参见 最初请求特性的讨论)。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/301743/viewspace-750228/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: EWeb4J框架介绍
请登录后发表评论 登录
全部评论

注册时间:2008-04-23

  • 博文量
    441
  • 访问量
    602322