提交 6b8a382a 编写于 作者: M Mike Dalessio

using a Hash with default proc to memoize dispatch methods

上级 f95f0918
......@@ -222,17 +222,12 @@ def visit_Float o; quote(o) end
def visit_BigDecimal o; quote(o) end
def visit_FalseClass o; quote(o) end
DISPATCH = {}
def visit object
send "visit_#{object.class.name.gsub('::', '_')}", object
#send DISPATCH[object.class], object
DISPATCH = Hash.new do |hash, klass|
hash[klass] = "visit_#{klass.name.gsub('::', '_')}"
end
private_instance_methods(false).each do |method|
method = method.to_s
next unless method =~ /^visit_(.*)$/
const = $1.split('_').inject(Object) { |m,s| m.const_get s }
DISPATCH[const] = method
def visit object
send DISPATCH[object.class], object
end
def quote value, column = nil
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册