擅长:python、mysql、java
<p>没有宏,但可以创建一个定义另一个函数并返回它的函数:</p>
<pre><code>def make_callback(msg_type, msg_type_func, attrs_to_copy):
def callback(msg):
m = msg_type(msg)
x = msg_type_func()
for attr in attrs_to_copy:
setattr(x, attr, getattr(m, attr))
pub2.publish(x)
return callback
</code></pre>
<p>然后你会做一些类似的事情:</p>
^{pr2}$
<p>根据您的逻辑有多复杂,以及不同函数之间的差异,您可能需要编写一个类,将回调功能分解为多个部分(例如“设置属性”步骤和“发布步骤”),并提供一个单独的“go”方法来执行它们。另外,如果您知道什么组合是有意义的(例如,您知道<code>MsgX</code>总是与<code>msg_type_a</code>一起使用),那么您可以在某个字典中显式地显示该信息,并使用该字典从一个或几个“key”值派生调用的各个部分。在</p>