分享 zw963 的 Ruby 笔记之`常犯错误`

zw963 · 2012年02月25日 · 最后由 hooopo 回复于 2012年02月27日 · 3050 次阅读

引子


以下内容纯粹为本人以前学习 Ruby 时的笔记整理。限于个人理解能力,可以肯定一定有 大量的错误,与其说分享,不如说是写出来让大家检查。如果有什么不对,或不准确的 地方,也希望前辈们一定多多指正,不吝赐教。

我希望这里是一个具有良好氛围的中文社区 (我梦寐以求的那个 Ruby 中文社区) 所以我不 希望出现针对这个帖子的不和谐言语或对针对本人的任何不良言语.

总共分为五大部分:每一部分都有上百条,可能会有重复,有些就是直接抄书。都是我 个人的理解以及对某些文章片段的延伸,大家就将就着看了。

markdown 格式折腾了一下午,托万能 Emacs 的福,使用 markdown-mode 搞定了。现在才觉 出 edit-server 的好来,这是另一个 Emacs 插件,可以让我在 Emacs 下使用特定的模式直 接编辑 Chrome 浏览器打开的表单,不过也许用惯了 org-mode 的缘故,这个 markdown 依旧 觉得很不习惯。

顺便提个建议:我总觉得应该开个 lisp 版块。我想凡是接触过 lisp(或 elisp) 的人,应该 都会觉得这两门语言惊人的相似,混入,布尔真假等等,如果说 Ruby 字符串 (尤其是 1.9) 及其强大,完全继承自 Perl 的话,我倒是觉得骨子里的东西 (类,模块) 甚至面向对 象的方式 (Ruby 一切都是对象,lisp 一切都是列表) 都和 lisp 惊人的相似,即使表面上 看起来这是完全不同的两种语言,甚至是不同类型语言。

笔记分类


  • Ruby 新人可以看看我的基础理论部分,这也是当初我学习 Ruby 心路历程,虽然有些问题很初级,但是我就是这样一步一步走过来的。

  • 类相关部分全是都是关于 Ruby 的基石类的概念。这部分的概念极多.超级复杂,也很抽象,如果你真正理解了 Ruby 的对象模型,会有及其惊艳的感觉。这部分的东西,这部分的大部分内容都是双眼瞪着天花板冥思苦想,也偶尔查阅源码而写出的。深有感触,有什么不对的地方,欢迎高手指正。

  • 小提示部分也很杂乱,这是感觉自己脱离了基础部分之后,写的一些小技巧。

  • 常犯错误部分不用说了,直到现在自己仍旧屡犯不止的错误。

  • ruby 惯例是自己整理的一些`非必须'的小技巧,但是作为 Ruby 惯例,应该支持。

正文开始


  1. 在使用方法调用`花括号包含的'代码块时,记住! 总是给该方法添加括号.

  2. 浮点数,Ruby小数点前后必须有数字出现.例如,不能写.1,而必须显式的写0.1相应的, 使用浮点数的科学表示法, 小数点前后必须有数字. 1.0e3, 如果写成1.e3, 将尝试调用1的e3方法.

  3. 为了高效的使用硬件, 大多数浮点数表现形式都是二进制的, 可以精确的表达1/2, 1/4, 1/1024的分数.但是, 1/10, 1/100, 1/100却无法做到精确. 这意味着: 0.4 - 0.3 == 0.1, 结果是false.

  4. 不要忘记raise其实是一个方法, raise 参数1(异常类型), 参数2(异常消息) (中间的逗号!!!)

  5. rescue其实也是一个方法, rescue 异常类型1, 异常类型2, ... (不要忘记中间的逗号)

  6. 如果你真的想通过代码块返回一个值, 使用next, 而不是return.只要满足以上约定,多数情况下,都可以使用proc替代Proc.new或lambda

  7. 一旦添加了yield语句, 或在方法内调用了Proc对象的call方法, 就必须有代码块,否则报错!!

  8. 一个类的instance_variables返回的是`类'的实例变量. (而非类实例的实例变量)

  9. 经常把,(逗号)写成.(dot)要注意改正这个坏习惯了.出现代码问题,很不好查的.

第 4 条有没有例子?

@jiffies , 这条我自己都记不太清楚了,本意应该是是:[a, b, c, d], 这种方式,在 Ruby 当中相当具有普遍的意义,尤其是在集合相关的枚举或定义。又或者是讲逗号,作为参数分隔符,在 Ruby 有普遍意义?

引子比正文还长……

我觉得未经整理的笔记不适合发到社区,推荐直接用 github 保存。

@rei, 首先说下,你可能没看仔细,每一个分类有上百条 (所有的五个分类加起来,才只是我的笔记的引子,呵呵), 如果总共只有一点点,我就不分五个帖子来讲了,我保证,写下来绝对引子长的多,但是谁能看的过来啊,而且还得做一些格式编辑,好麻烦 . 另外,这些笔记至少前面的这些部分,前几个月才整理过的。感觉念起来都挺顺的,一看就明白,也备忘,只不过每个人的思路差别很大的。也许我该以其他形式来讲出来。

@zw963 我觉得你可以整理成 pdf 文档和大家来分享~ :>

@skandhas, 也是不错的注意。虽然 org-mode 自动就可以导出成 pdf, 只不过稍微有点乱,汗,光顾记笔记,写笔记,没有在格式方面有过多的考虑。抽时间好好整理下,把我笔记整个发上来,那就是一本不是太基础也不是太专业的 Ruby 书籍。呵呵

#2 楼 @jiffies 是不是说 var = [a,b,c,d] 方括号本身也是方法,参数是 a,b,c,d?

怎么感觉格式还是很乱呀

zw963 zw963 的 Ruby 笔记之`基础理论` 提及了此话题。 11月13日 16:30
zw963 zw963 的 Ruby 笔记之`类相关` 提及了此话题。 04月03日 10:56
zw963 zw963 的 Ruby 笔记之`小提示` 提及了此话题。 04月03日 10:56
zw963 zw963 的 Ruby 笔记之`Ruby 惯例` 提及了此话题。 04月03日 10:56
需要 登录 后方可回复, 如果你还没有账号请 注册新账号