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

Ruby - 条条道路通罗马

浏览 3102 次
精华帖 (9) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-06-04  
Ruby语言有TMTOWTDI的味道 (There’s more than one way to do it),一些人认为这是一种不好的味道,但我觉得这很好玩,颇有条条道路通罗马意味。我翻译过一些Ruby Quiz的题目,可以看到很多不同的ruby解法,从好玩中学到别人的想法和知识,这很棒。

写这篇文章的一个起因是问答频道的一个题目:ruby 怎么利用正则表达式在把一个字符串数组中的数字放到一个数组中?,我从其他人的解答中学到了一些string对象以前从来不注意的方法。
第2个原因是一篇博客:21个你应该使用的Ruby小技巧,学到了很多非常棒的小技巧,可以让代码更简练。
第3个原因还是一篇博客:Ruby TMTOWTDI, Episode 1,作者在他们的开发团队中会经常举办小比赛,出一个题目让大家用ruby来解决,然后会评选出性能最好和最优雅的2个获胜者。这篇博客的问题是:
引用

给定一个类似下面格式的字符串
"a10 b20 c25 d40"

写一段代码把它转化成hash
{'a' => 10, 'b' => 20, 'c' => 25, 'd' => 40 }


从解答中可以学到很多好玩的小技巧,有兴趣的可以一看。

我觉得这种在团队中推行类似ruby quiz的方法有很多好处,在之前的Java团队我也用过:
1. 增加整个团队的互动
2. 了解他人的编码风格,以便更好的协作
3. 知识共享,把他人的知识/小技巧变成自己的
大家有兴趣的话,不妨在自己的团队中也试试看
   发表时间:2008-06-04  
看了下这几篇文章,确实很受启发。
0 请登录后投票
   发表时间:2008-06-04  
我有让偶们公司的C老大们去做做某些quiz的题目,无人问津,我在上演独角戏,唉。。。
0 请登录后投票
   发表时间:2008-06-13  
好处还有一点,就是代码优化,因为从‘Ruby TMTOWTDI, Episode 1’这个博文后面,还特别对不同解法进行了性能测评,以决出最后的优胜者,只有这样的比较,才会有更加精湛的技艺和高手出现,老外这点追求真还不得不佩服阿。。。

Tim的解法比较直观

Hash[*(str.scan(/(\w)(\d+)/).map {|k, v| [k, v.to_i] }.flatten)]

知识点包括regex, scan方法,map方法,flatten方法,以及*(asterisk)操作符,

见http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Method_Calls
0 请登录后投票
   发表时间:2009-04-30   最后修改:2009-04-30
刚才看了一下这题:
引用
str='100good200bad300ok'

除了用scan用split也不错:
str='100good200bad300ok'
str.split(/\D+/) #or str.split(/[a-z]+/)
=>["100", "200", "300"]
1 请登录后投票
论坛首页 编程语言技术版

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