level 6
而且我也非常希望能得到你的反馈。欢迎任何评论,提出建议,以及对书中的错误和例子中的问题给予指正。请发邮件到:
[email protected]
如果你告诉我们书中的错误,我会将它们加入到位于以下地址的勘误表中:
http://www.pragmaticprogrammer.com/titles/ruby/errata.html
从下面的地址中你会发现书中几乎所有样例代码的源代码链接:
http://www.pragmaticprogrammer.com/titles/ruby
致谢
Acknowledgments
我曾在Ruby邮件列表中询问是否有人愿意帮助审查此书的第2版。几乎有一百名志愿者响应了我的请求。为了便于管理,我不得不依据先来先得的原则限制人数。即使这样,那些出色的审查员还是给了我超过1.5MB的建议。他们指出了许多问题,从放错地方的逗号到遗漏的方法。我不可能获得比这更好的帮助了,所以非常“感谢”RichardAmacker, David A. Black, Tony Bowden, James Britt, Warren Brown,Mike Clark, Ryan Davis (感谢那个日文PDF!),Guy Decoux, Friedrich Dominicus,Thomas Enebo, Chad Fowler, HalFulton, Ben Giddings, Johan Holmberg, Andrew Johnson, Rich Kilmer,Robert Klemme,Yukihiro Matsumoto, Marcel Molina Jr., Roeland Moors, Michael Neumann,Paul Rogers,Sean Russell, Hugh Sasse, Gavin Sinclair, Tanaka Akira, Juliet Thomas,GlennVanderburg, Koen Vervloesem和Austin Ziegler.
Chad Fowler写了RubyGems一章。实际上,他写了两次。写第一次的时候他在欧洲休假,不幸在回家的路上,他的Powerbook被偷了,而他所写的书稿也丢失了,所以回去以后,他只好又坐下来重写了一遍。对此我感激不尽。
Kim Wimpsett做了编辑这一费力不讨好的工作。她做了大量的工作(而且超过了记录),而本书中行业术语的数量和我对语言的组织能力之差使得这项任务更加困难。Ed Giddens设计了出色的封面,该封面极好地混合了新老封面。谢谢他们!
最后,我仍想对Ruby的创建者Yukihiro“Matz” Matsumoto致以深深的谢意。在这段成长和变化的时间内,他一直以快乐和专一的精神来改进Ruby语言。Ruby社区的友善和开发精神是他个人精神的直接体现。
谢谢各位。Domo arigato gozaimasu.
Dave Thomas
THE PRAGMATICPROGRAMMERS
http://www.pragmaticprogrammer.com
符号约定
Notation Conventions
在本书中,我们使用如下排版符号。
代码样例使用等宽字体显示。
class SampleCode
defrun
#...
end
end
在正文中,Fred#do_something是对Fred类的实例方法(这里是do_something)的引用,Fred.new是一个类方法,而Fred::EOF是一个类常量。使用井号符来表示实例方法的决定是很棘手的:它不是合法的Ruby语法,但是我们认为区分一个类的实例方法和类方法是很重要的。当你看到File.read时,你知道我们在讨论类方法read。而当你看到File#read时,我们在引用实例方法read。
本书包含了很多Ruby代码片断。如果可能,我们会尽量显示运行它们的结果。一个最简单的例子,我们将表达式的值和表达式显示在同一行上。例如:
a = 1
b = 2
a + b → 3
在这里,你能看到 a + b 的计算结果3显示在了箭头的右边。注意如果你只是运行这个程序,那么你不会看到输出结果3——你需要使用类似 puts 这样的方法将其输出。
有时我们对赋值语句的值感兴趣,这种情况下我们也会把它显示出来。
a = 1 → 1
b = 2 → 2
a + b → 3
如果程序输出更复杂,那么我们将其显示在程序代码下面。
3.times { puts"Hello!" }
输出结果:
Hello!
Hello!
Hello!
在某些库文档中,我们需要在输出中显示空格。你会看到空格被表示成“ ”字符。
命令行调用使用等宽字体表示,而参数使用斜体表示。可选元素被放在中括号中。
ruby [ flags ... ] [ progname ] [arguments ... ]
2010年01月04日 11点01分


