阅读更多

0顶
0踩

编程语言

翻译新闻 Ruby 2.0 未被提及的一些特性

2013-04-16 15:26 by 副主编 wangguo 评论(2) 有7671人浏览
Ruby 2.0发布已经有一段时间了,网上也有大量关于2.0新特性的文章。但是这些文章似乎遗漏了一些特性,因此有了下面的内容。



1.  现在所有的常量均支持 ||= 和 &&=

在Ruby 1.8和1.9中,常量的行为和变量一样,但并非所有都是如此。这是比较可悲的。

>> A = nil; A ||= 1; p A
-e:1: warning: already initialized constant A
1
>> A = 1; A += 1; p A
-e:1: warning: already initialized constant A
2
>> ::B ||= 1
-e:1: constant re-assignment

注意,在最后一种情况下,常量甚至之前没有定义。

在Ruby 2.0中,允许我们自由使用。

>> ::A ||= 1; p A
1

但是请不要在你的代码中这样使用。

2.  更好的消歧符号和hash标签

在Ruby 1.9中,会提示以下代码存在语法错误:

>> if false; else p:bar end
-e:1: syntax error, unexpected tLABEL
if false; else p:bar end
                 ^

但是在Ruby 2.0中可以解析:

>> if false; else p:bar end
:bar
=> :bar

但是也请不要在代码中使用这个特性。

3.  在方法主体中使用BEGIN{}会显示错误

Ruby 1.8:

>> def f; BEGIN{}; end
-e:1: BEGIN in method
def f; BEGIN{}; end
            ^

Ruby 1.9:

>> def f; BEGIN{}; end
-e:1: syntax error, unexpected keyword_BEGIN
def f; BEGIN{}; end
            ^

Ruby 2.0:

-e:1: BEGIN is permitted only at toplevel
def f; BEGIN{}; end
            ^

请不要依赖这个特性或使用BEGIN来写代码。

4.  遮蔽块变量声明现在可以跨多行

Ruby 1.9:

>> m { |a
;b| }
-:1: syntax error, unexpected '\n', expecting '|'

Ruby 2.0:

>> p { |a
;b| }
nil

5.  其他

Ruby 1.9:

>> m () {}
-e:1: syntax error, unexpected ')'
m () {}
    ^

Ruby 2.0:

>> p () {}
nil

建议在专家指导下使用该特性。

原文:Unmentioned Features of Ruby 2.0
  • 大小: 31.4 KB
0
0
评论 共 2 条 请登录后发表评论
2 楼 wangguo 2013-04-16 17:44
clxy 写道
这大量的
引用
不要在代码中使用这个特性

是怎么个意思?

还有
引用
建议在专家指导下使用该特性。


我去,这是什么强力毒药或是WMD吗?!
服了...

这些特性不向后兼容,因此使用要慎重,稍有不慎就出错
1 楼 clxy 2013-04-16 15:53
这大量的
引用
不要在代码中使用这个特性

是怎么个意思?

还有
引用
建议在专家指导下使用该特性。


我去,这是什么强力毒药或是WMD吗?!
服了...

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 进入Ruby的世界——基础篇

    Ruby语法的生存工具箱[1] Ruby基础编程指引:程序编写、保存、运行和错误检查 Ruby安装指南 Ruby的扩展机制 Ruby中易用的命令行工具,包括交互式Ruby解释器(irb) 本书的内容是Ruby基础,而本章是基础中的基石。本...

  • 听Ruby之父畅谈编程语言的设计

    本文摘自《松本行弘:编程语言的设计与实现》 1-1 自己创造编程语言的意义 通过实际创造一门新的编程语言,可以学到编程语言的设计思路和实现方法。随着开源的普及,创造新编程语言的门槛一下子...Ruby 是我出于兴...

  • Web 2.0

    web 2.0 概念

  • Perl、PHP、Python、Java和Ruby的比较

    预览 ...◆ (RoR)与Ruby结合之后,便如一只猱身而上灵猫,立刻衬托出Java和.NET大象般的身影 提问 ◆ Perl、Python、Ruby和PHP各自有何特点? ◆ 为什么动态语言多作为轻量级的解决方案? ◆ LA

  • JavaSE-新特性(JDK5-JDK12)持续维护

    JDK5新特性 自动装箱与拆箱枚举静态导入可变参数(Varargs)内省(introspector)泛型(Generic) For-Each循环 JDK6新特性 Desktop类和SystemTray类使用JAXB2来实现对象与XML之间的映射...

  • web2.0

    Web2.0 是相对Web1.0 的新的一类互联网应用的统称。Web1.0 的主要特点在于用户通过浏览器获取信息。Web2.0 则更注重用户的交互作用,用户既是网站内容的浏览者,也是网站内容的制造者。所谓网站内容的制造者是说...

  • Ext JS 2.0 IDE

    Aptana Studio ...但是Aptana当前捆绑的Ext的版本有些旧(1.1的),下面就介绍一个插件的安装方法,让Aptana支持到2.0(由Markus Schmidleitner提供,用起来还不错): 1. 下载并安装Aptana Studi...

  • 比较Perl、PHP、Python、Java和Ruby 【转载】

    !预览 · 语言的发展趋势一定是动静结合、刚柔并济 · Perl凝练晦涩,Python优雅...· (RoR)与Ruby结合之后,便如一只猱身而上灵猫,立刻衬托出Java和.NET大象般的身影 ?提问 Perl、Python、Ruby和PHP各自有

  • Status Ruby on Rails in China - Presentation Transcript

    Slide 1: 铁道中文应用开发现状综述 2008年8月 制作发布:铁道播客 BD7LX 深圳 http://rorcast.blogger2blogger.com/ 铁道中文应用开发现状综述 2006年8月 An Interim Report of Ruby on Rails Applications and ...

  • javapython区别最全整理终极收藏_Perl、PHP、Python、Java 和 Ruby 比较【转载+整理】...

    从本文的内容上,写的时间比较早,...Ruby on Rails 为什么会流行?编程语言的发展趋势是什么?“剩下四种动态语言,我们将之归为后台脚本语言。”冒号说着,画了张图表—— 引号听得仔细,说:“我记得你之前把这些...

  • 比较Perl、PHP、Python、Java和Ruby

    !预览 · 语言的发展趋势一定是动静结合...· (RoR)与Ruby结合之后,便如一只猱身而上灵猫,立刻衬托出Java和.NET大象般的身影   ?提问 Perl、Python、Ruby和PHP各自有何特点? 为什么动态语言多

  • 【转】语言简评:比较Perl、PHP、Python、Java和Ruby

    操千曲而后晓声,观千剑...关键词:后台脚本, Perl,PHP,Python,Ruby,RoR,LAMP 摘要:简谈Perl、PHP、Python和Ruby !预览 ·  语言的发展趋势一定是动静结合、刚柔并济 ·  Perl凝练晦涩,Python优雅明晰,

  • Web2.0是什么:下一代软件的业务模式与设计模式

    Web2.0 Web2.0 是相对Web1.0 的新的一类互联网应用的统称。Web1.0 的主要特点在于用户通过浏览器获取信息。Web2.0 则更注重用户的交互作用,用户既是网站内容的浏览者,也是网站内容的制造者。所谓网站内容的制造者...

  • node-v5.1.1-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

  • 基于Android+Java的 AES 加密算法分析.zip

    Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统,主要应用于移动设备,如智能手机和平板电脑。该系统最初由安迪·鲁宾开发,后被Google公司收购并注资,随后与多家硬件制造商、软件开发商及电信营运商共同研发改良。 Android操作系统的特点包括: 开放源代码:Android系统采用开放源代码模式,允许开发者自由访问、修改和定制操作系统,这促进了技术的创新和发展,使得Android系统具有高度的灵活性和可定制性。 多任务处理:Android允许用户同时运行多个应用程序,并且可以轻松地在不同应用程序之间切换,提高了效率和便利性。 丰富的应用生态系统:Android系统拥有庞大的应用程序生态系统,用户可以从Google Play商店或其他第三方应用市场下载和安装各种各样的应用程序,满足各种需求。 可定制性:Android操作系统可以根据用户的个人喜好进行定制,用户可以更改主题、小部件和图标等,以使其界面更符合个人风格和偏好。 多种设备支持:Android操作系统可以运行在多种不同类型的设备上,包括手机、平板电脑、智能电视、汽车导航系统等。 此外,Android系统还有一些常见的问题,如应用崩溃、电池耗电过快、Wi-Fi连接问题、存储空间不足、更新问题等。针对这些问题,用户可以尝试一些基本的解决方法,如清除应用缓存和数据、降低屏幕亮度、关闭没有使用的连接和传感器、限制后台运行的应用、删除不需要的文件和应用等。 随着Android系统的不断发展,其功能和性能也在不断提升。例如,最新的Android版本引入了更多的安全性和隐私保护功能,以及更流畅的用户界面和更强大的性能。此外,Android系统也在不断探索新的应用场景,如智能家居、虚拟现实、人工智能等领域。 总之,Android系统是一种功能强大、灵活可定制、拥有丰富应用生态系统的移动操作系统,在全球范围内拥有广泛的用户基础。

  • Visio卷积神经网络(CNN)结构图模板:专业设计资源下载

    Visio卷积神经网络(CNN)结构图模板是一个专为深度学习和人工智能领域设计的绘图工具。该模板提供了一套完整的预制图形和符号,包括卷积层、池化层、全连接层、激活函数等,使得用户能够快速构建和自定义复杂的神经网络架构。通过这个模板,研究人员和工程师可以更加直观和高效地展示和分享他们的模型设计。它适用于学术论文、技术报告、项目演示等多种场合。该资源还包括易于编辑的图层和格式,允许用户根据需要调整网络的每个部分。此外,Visio的拖放功能和自动化特性大大简化了绘图过程,使得即使是初学者也能轻松创建专业的CNN结构图。

  • 2024-2030中国粉尘环境在线监测报警系统市场现状研究分析与发展前景预测报告.docx

    2024-2030中国粉尘环境在线监测报警系统市场现状研究分析与发展前景预测报告

  • 基于 SpringCloud 和 Vue3 的OA系统源码+数据库.zip

    基于 SpringCloud 和 Vue3 的OA系统源码+数据库.zip 基于 SpringCloud 和 Vue3 的OA系统源码+数据库.zip基于 SpringCloud 和 Vue3 的OA系统源码+数据库.zip基于 SpringCloud 和 Vue3 的OA系统源码+数据库.zip基于 SpringCloud 和 Vue3 的OA系统源码+数据库.zip基于 SpringCloud 和 Vue3 的OA系统源码+数据库.zip基于 SpringCloud 和 Vue3 的OA系统源码+数据库.zip基于 SpringCloud 和 Vue3 的OA系统源码+数据库.zip基于 SpringCloud 和 Vue3 的OA系统源码+数据库.zip基于 SpringCloud 和 Vue3 的OA系统源码+数据库.zip基于 SpringCloud 和 Vue3 的OA系统源码+数据库.zip

  • VIO初始化其实不难,看完这篇你就懂了

    VIO初始化其实不难,看完这篇你就懂了

  • 地毯纱线,全球前19强生产商排名及市场份额.docx

    地毯纱线,全球前19强生产商排名及市场份额.docx

Global site tag (gtag.js) - Google Analytics