锁定老帖子 主题:Ruby惯用法
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2006-09-20
qiezi 写道 这么全啊。inject我看了几次没理解,干脆不看了。
ruby函数调用可以省括号,方便是方便,不过一些FP用法也看不见了,这方面python还比较好。 从facet可以看出来,ruby里面使劲往一个类里塞东西还是有传统的。 inject的确挺不太容易搞明白的,为了搞明白索性简单实现一下,这样理解应该会更深刻些,比如: (1..10).inject{|sum, item| sum += item} 可以用下面的代码简单实现 class Range def my_inject(x) each { |i| x = yield(x,i) } return x end end 仔细想想,ruby这种yield的机制真好,将通常的一个函数调用,变成了2个函数的组合调用。 这样一方面灵活性大大增加,变化更多。原来是写n个函数就是n种方式,现在变成写 n+m个函数就有了n*m种调用方式了。当然,别的语言也可以做到类似的实现,可是会造成太多的冗余代码,不但写得麻烦,读起来也累。 另一方面,更有利于把任务划分成更小的单位,这样会减少重复代码,让程序变得更简洁,尽量做到DRY( don't repeat yourself ) 刚开始看ruby,感觉是一个不错的方向。 |
|
返回顶楼 | |
发表时间:2007-05-12
qiezi 写道 Suninny 写道 还有借鉴了Perl的:
names = %w[ruby rails java python cookoo firebody] 等同于: names = ["ruby", "rails", "java", "python", "cookoo", "firebody"] %w, %r, %Q, %q, %s, %x还挺多。 好像在哪里看到过这些惯用法的全称,但是记不得地址了,谁给个链接? |
|
返回顶楼 | |
发表时间:2007-05-13
写法太灵活了是好事还是坏事呢?
一人一种写法 读起来会不会很吃力? |
|
返回顶楼 | |