/etc
下面信息。比如系统登录用户,可以做一个系统粘合性较高的程序来使用。eof?
是一个外部迭代器可以用的方法,外部迭代器更方便控制。其他eof?
同理。这个要介绍下比如
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
ruby -r tracer sample.rb
github wiki
#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
未完待续