【发布时间】:2015-09-27 13:35:12
【问题描述】:
我想自动生成一些函数并自动导出。举个具体的例子,假设我想构建一个模块,它提供接收信号并对其应用移动平均/最大值/最小值/中位数...的函数。
代码生成已经生效:
for fun in (:maximum, :minimum, :median, :mean)
fname = symbol("$(fun)filter")
@eval ($fname)(signal, windowsize) = windowfilter(signal, $fun, windowsize)
end
给我功能
maximumfilter
minimumfilter
...
但是如何自动导出它们呢?例如我想在上面的循环中添加一些代码,比如
export $(fname)
并在创建后导出每个函数。
【问题讨论】:
-
eval(Expr(:export, fname))有效吗?我在SymPy中使用了类似的东西。不确定这是不是最好的方法。 -
谢谢,它对我有用!
-
@jverzani Tom 的回答很有趣,但由于(令人难以置信的)简单性以及它适用于 v1.0 的事实,您的评论可能应该是公认的答案。如果您发布它,那么我肯定会支持它。
-
我认为这是旧版 julia 的问题,其中
Expr(:export, fname)==:(export $fname)不成立。
标签: metaprogramming julia