将参数传递给回调块
Passing an argument to a callback block
我正在为我正在处理的 gem 编写一个简单的回调。请注意,由于某些体系结构限制,我无法针对此特定情况使用 ActiveSupport define_callbacks
方法。
现在,我有这样的东西:
def self.after_data_transcoding(&block)
define_method :_after_data_transcoding_callback { block.call }
end
所以用例与此类似:
class MyClass
after_data_transcoding do
end
end
实际调用是由instance.send(:_after_data_transcoding_callback)
完成的。
到目前为止,代码运行良好。我希望更进一步,能够将响应作为块参数访问:
class MyClass
after_data_transcoding do |response|
# Do something with the response
end
end
然而,我并没有取得太大的成功。关于我应该如何进行的任何想法?
事实证明这比我想象的要容易。
define_method(:_after_data_transcoding_callback) { |response|
block.call(response)
}
instance.send(:_after_data_transcoding_callback, response)
我正在为我正在处理的 gem 编写一个简单的回调。请注意,由于某些体系结构限制,我无法针对此特定情况使用 ActiveSupport define_callbacks
方法。
现在,我有这样的东西:
def self.after_data_transcoding(&block)
define_method :_after_data_transcoding_callback { block.call }
end
所以用例与此类似:
class MyClass
after_data_transcoding do
end
end
实际调用是由instance.send(:_after_data_transcoding_callback)
完成的。
到目前为止,代码运行良好。我希望更进一步,能够将响应作为块参数访问:
class MyClass
after_data_transcoding do |response|
# Do something with the response
end
end
然而,我并没有取得太大的成功。关于我应该如何进行的任何想法?
事实证明这比我想象的要容易。
define_method(:_after_data_transcoding_callback) { |response|
block.call(response)
}
instance.send(:_after_data_transcoding_callback, response)