论坛首页 编程语言技术论坛

Ruby惯用法

浏览 48331 次
锁定老帖子 主题: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,感觉是一个不错的方向。
 
0 请登录后投票
   发表时间: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还挺多。

好像在哪里看到过这些惯用法的全称,但是记不得地址了,谁给个链接?
0 请登录后投票
   发表时间:2007-05-13  
写法太灵活了是好事还是坏事呢?
一人一种写法 读起来会不会很吃力?
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics