Ruby 1.8 和 Ruby 1.9 有什么区别
我不清楚 Ruby 的“当前”版本(1.8)和“新”版本(1.9)之间的区别。 对于这些差异以及为什么如此不同,是否有一个“简单”或“简单”的解释?
I'm not clear on the differences between the "current" version of Ruby (1.8) and the "new" version (1.9). Is there an "easy" or a "simple" explanation of the differences and why it is so different?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
一个巨大的区别是从 Matz 的解释器迁移到 YARV,这是一种字节码虚拟机,可以显着帮助表现。
One huge difference would be the move from Matz's interpreter to YARV, a bytecode virtual machine that helps significantly with performance.
Sam Ruby 有一个很酷的幻灯片,概述了差异。
为了将这些信息内联起来以便于参考,并且以防万一链接在抽象的未来失效,这里是 Sam 幻灯片的概述。 幻灯片放映不太容易查看,但将所有内容都排列在这样的列表中也很有帮助。
Ruby 1.9 - 主要功能
发生了什么变化?
单字符串。
Ruby 1.9
Ruby 1.8.6
字符串索引。
Ruby 1.9
Ruby 1.8.6
{"a","b"} 不再支持
Ruby 1.9
Ruby 1.8.6
操作: 转换为 {1 => 2}
Array.to_s
现在包含标点符号Ruby 1.9
Ruby 1.8.6
操作: 使用 .join 代替
冒号 在 When 语句中不再有效
Ruby 1.9
Ruby 1.8.6
操作: 使用分号、then 或换行符
块变量现在隐藏局部变量
Ruby 1.9
Ruby 1.8.6
Hash.index
已弃用Ruby 1.9
Ruby 1.8.6
操作: 使用 Hash.key
Fixnum.to_sym
现已消失Ruby 1.9
Ruby 1.8.6
(续) Ruby 1.9
svn.ruby-lang.org/repos/ruby/trunk/lib/rake.rb
哈希键现在无序
Ruby 1.9
Ruby 1.8.6
顺序是插入顺序
更严格的 Unicode 正则表达式
Ruby 1.9
Ruby 1.8.6
tr
和Regexp
现在了解 UnicodeRuby 1.9
pack< /code> 和
unpack
Ruby 1.8.6
BasicObject
比BlankSlate
Ruby 1.9
更加残酷Ruby 1.8.6
操作:使用 ::Math::PI
委托更改
Ruby 1.9
Ruby 1.8.6
缺陷 17700
使用 $KCODE 会产生警告
Ruby 1.9
Ruby 1.8.6
instance_methods
现在是符号数组Ruby 1.9
Ruby 1.8.6
操作: 替换 instance_methods.include? 与method_define?
源文件编码
基本
Emacs
Shebang
真实线程
有什么新内容?
作为哈希键的符号的替代语法
Ruby 1.9
Ruby 1.8.6
块局部变量
Ruby 1.9
注入方法
Ruby 1.9
Ruby 1.8.6
to_enum
Ruby 1.9
没有块? 枚举!
Ruby 1.9
Lambda 速记
Ruby 1.9
Ruby 1.8.6
复数
Ruby 1.9
小数仍然不是默认值
Ruby 1.9
正则表达式“属性”
Ruby 1.9
Ruby 1.8.6
中间的 Splat
Ruby 1.9
纤维
Ruby 1.9
中断值
Ruby 1.9
“嵌套”方法
Ruby 1.9
哈!
Sam Ruby has a cool slideshow that outline the differences.
In the interest of bringing this information inline for easier reference, and in case the link goes dead in the abstract future, here's an overview of Sam's slides. The slideshow is less overwhelming to review, but having it all laid out in a list like this is also helpful.
Ruby 1.9 - Major Features
What's changed?
Single character strings.
Ruby 1.9
Ruby 1.8.6
String index.
Ruby 1.9
Ruby 1.8.6
{"a","b"} No Longer Supported
Ruby 1.9
Ruby 1.8.6
Action: Convert to {1 => 2}
Array.to_s
Now Contains PunctuationRuby 1.9
Ruby 1.8.6
Action: Use .join instead
Colon No Longer Valid In When Statements
Ruby 1.9
Ruby 1.8.6
Action: Use semicolon, then, or newline
Block Variables Now Shadow Local Variables
Ruby 1.9
Ruby 1.8.6
Hash.index
DeprecatedRuby 1.9
Ruby 1.8.6
Action: Use Hash.key
Fixnum.to_sym
Now GoneRuby 1.9
Ruby 1.8.6
(Cont'd) Ruby 1.9
svn.ruby-lang.org/repos/ruby/trunk/lib/rake.rb
Hash Keys Now Unordered
Ruby 1.9
Ruby 1.8.6
Order is insertion order
Stricter Unicode Regular Expressions
Ruby 1.9
Ruby 1.8.6
tr
andRegexp
Now Understand UnicodeRuby 1.9
pack
andunpack
Ruby 1.8.6
BasicObject
More Brutal ThanBlankSlate
Ruby 1.9
Ruby 1.8.6
Action: Use ::Math::PI
Delegation Changes
Ruby 1.9
Ruby 1.8.6
Defect 17700
Use of $KCODE Produces Warnings
Ruby 1.9
Ruby 1.8.6
instance_methods
Now an Array of SymbolsRuby 1.9
Ruby 1.8.6
Action: Replace instance_methods.include? with method_defined?
Source File Encoding
Basic
Emacs
Shebang
Real Threading
What's New?
Alternate Syntax for Symbol as Hash Keys
Ruby 1.9
Ruby 1.8.6
Block Local Variables
Ruby 1.9
Inject Methods
Ruby 1.9
Ruby 1.8.6
to_enum
Ruby 1.9
No block? Enum!
Ruby 1.9
Lambda Shorthand
Ruby 1.9
Ruby 1.8.6
Complex Numbers
Ruby 1.9
Decimal Is Still Not The Default
Ruby 1.9
Regex “Properties”
Ruby 1.9
Ruby 1.8.6
Splat in Middle
Ruby 1.9
Fibers
Ruby 1.9
Break Values
Ruby 1.9
“Nested” Methods
Ruby 1.9
HTH!
更多更改:
返回 splat 单例数组:
数组参数
Some more changes:
Returning a splat singleton array:
array arguments
现在,许多人推荐 Ruby 编程语言而不是 Pickaxe - 更重要的是,它具有 1.8/1.9 差异的所有细节。
Many now recommend The Ruby Programming Language over the Pickaxe - more to the point, it has all the details of the 1.8/1.9 differences.