Ruby标准库有趣部分摘要

  • etc 用来获得 /etc 下面信息。比如系统登录用户,可以做一个系统粘合性较高的程序来使用。
  • enumerable 把你的class变成迭代器
  • objectspace 可以返回class实例统计信息,size等,可以作为扫描、performance、统计使用。
  • observable 把你的class变成发布订阅模式
  • marshal 把程序对象字节持久化,或者还原。适合做在内存中缓存对象。比如 命令模式栈里撤销的对象。
  • pathname 有野心的module封装了路径的操作,方便目录文件操作
  • IO#eof? eof?是一个外部迭代器可以用的方法,外部迭代器更方便控制。其他eof? 同理。
  • mutex 多线程中提供锁同步
  • drb 让Ruby支持分布式程序,通过TCP/IP将程序各部分合并在一起。
  • forwardable 自动生成代理方法。

这个要介绍下比如

require 'forwardable'

class WriterDecorator
  extend Forwardable

  def_delegators :@real_writer, :write_line #, :other_method .... 方法不限制

  def initialize(real_writer)
    @real_writer = real_writer
  end

end

就会生成类似如下的部分。

def_delegators 接受两个或者更多参数,第一个是实例属性的名字,后面是一个或者多个方法的名字,每个方法都会被传递到代理对象上去。

forwardable 是比 method_missing 更精确的武器。

 class WriterDecorator
  def initialize(real_writer)
    @real_writer = real_writer
  end

  # 传递代理方法
  def write_line(line)
    @real_writer.write_line(line)
  end
 end



  #0:<internal:lib/rubygems/custom_require>:38:Kernel:<: -
  #0:example.rb:3::-: class A
  #0:example.rb:3::C: class A
  #0:example.rb:4::-:   def square(a)
  #0:example.rb:7::E: end
  #0:example.rb:9::-: a = A.new
  #0:example.rb:10::-: a.square(5)
  #0:example.rb:4:A:>:   def square(a)
  #0:example.rb:5:A:-:     return a*a
  #0:example.rb:6:A:<:   end
   |  |         | |  |
   |  |         | |   ---------------------+ event
   |  |         |  ------------------------+ class
   |  |          --------------------------+ line
   |   ------------------------------------+ filename
    ---------------------------------------+ thread

Symbol table used for displaying incoming events:

+}+:: call a C-language routine
+{+:: return from a C-language routine
+>+:: call a Ruby method
+C+:: start a class or module definition
+E+:: finish a class or module definition
+-+:: execute code on a new line
+^+:: raise an exception
+<+:: return from a Ruby method

  • singleton 把你的class变成单例模式
  • find 查找文件所用
  • Racc 参照UNIX YACC的分析器。分析器生成工具
  • yaml 处理yaml

  • String#scan 可以用正则进行分词

  • benchmark 性能分析的性能基准库。
  • profile 性能分析。这个以前在标准库,现在独立成 gem gem install profile 安装

未完待续

Mark24

Everything can Mix.