随笔-36  评论-26  文章-0  trackbacks-1
  2007年7月4日
Ruby is really Niubility in some ways.

   《Programming Ruby 2ed》中文版这本书的源代码在网站上有下载,但是由于翻译过,并且代码很零碎,有1600多个源代码文件,而且源文件其中的页数已经与中文版的页数不相符了。为了搜索到包含指定的字符串的文件,决定用ruby自己动手写一个,经过多次重构,最后的代码如下:

class BriefExampleCodeFinder
  EXP_CODE_DIR="E:/MyCode/MyRubyCode/Programming Ruby/src"
  def locate(search_reg)
    result = Array.new
    Dir.foreach(EXP_CODE_DIR)\
     { |orgFile| result.push( EXP_CODE_DIR+'/'+orgFile) \    #向数组中置入符合条件的文件
      if (File.file?(EXP_CODE_DIR+'/'+orgFile) \      #判断是否为文件?有可能是目录
        && File.open(EXP_CODE_DIR+'/'+orgFile).grep(search_reg).length>0) }  #用正则表达式完成文件中内容的匹配
      return result
  end
end
其中红字部分在RUBY中作为一行代码处理,
看出来了么,两行代码搞定!!!
RUBY在文本处理和循环方面的能力真是厉害啊!!!

不过这样好像带来了可读性的问题,但是熟悉RUBY的语法之后,这些应该不是问题吧
p.s,可能有人会考虑到文件的打开和关闭涉及到的异常问题,在RUBY中,对File或IO来说,调用foreach后文件会自动关闭,不需要开发人员进行额外的处理。但是Dir.foreach,是否会自动关闭目录流或文件流呢?这个问题待考,也希望有高人知道的,说一声。
posted @ 2007-07-04 16:39 小熊bryan 阅读(484) 评论(0) 编辑
我的文章用到的缩略语列表:
  • CI/ci = 持续集成
  • TD.net/td.net = TestDriven.net
  • cc.net/CC.NET = CruiseControl.net
  • TM/TM.net = TypeMock.net
  • UE/ue = ultraedit
  • ROR/ror=Ruby On Rails
联系方式:
SMN: bryanzk@hotmail.com MAIL:bryanzk@gmail.com
Subscribe by Anothr订阅到MSN/Skype/Gtalk
    我的豆瓣:

    昵称:小熊bryan
    园龄:4年9个月
    粉丝:0
    关注:0
    <2007年7月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    搜索

     
     

    常用链接

    随笔分类(75)

    随笔档案(38)

    最新评论

    阅读排行榜

    评论排行榜

    推荐排行榜