【发布时间】:2016-10-15 03:08:07
【问题描述】:
我正在尝试为函数模板定义一个宏,即一个模板,您可以在其中轻松放入相关代码,但不想向用户公开所有细节实现细节。例如,我想要这样的东西,将表达式放入更复杂的函数中:
macro make_complex_function(ex)
quote
function (alg,f,t,u,k)
# Add some stuff on top
condition1 = false
condition2 = false
#...
#Put in the user's code
$(esc(ex))
# Put a footer
return some,stuff,here,long,annoying,list
end
end
end
因此用户可以轻松插入少量逻辑(使用简化的 API/文档):
easy_func = @make_complex_function begin
if u > 1
print("oh no! It happened!")
end
end
虽然更高级的用户仍然可以使用全部功能。但是,如果您运行该代码,您将可以访问未定义的引用错误。我认为这是因为我没有正确转义表达式,应该以某种方式转义整个函数,但不知道如何。
【问题讨论】:
标签: metaprogramming julia