【发布时间】:2021-04-25 03:43:31
【问题描述】:
在某些语言(如 Python)中,有一些函数装饰器,它们看起来像宏,位于函数定义之上。装饰器为函数本身提供了一些额外的功能。
Julia 是否以任何方式支持这种函数装饰器的想法?是否可以使用宏来实现相同的目标?
【问题讨论】:
-
在 Python 中,装饰器只不过是把函数作为参数并以某种方式返回修改后的函数的函数。在 Julia 中,我们定义的“函数”不是一个完整的函数,而是可能是多方法的一小部分,这增加了一些复杂性。我很好奇这样的事情是否容易实现。
-
我没有写很多宏,但我认为宏通常是 Julia 中“装饰”方法的方式。它实际上并没有以同样的方式工作,因为宏在编译过程中发挥作用(编译 Julia 与解释 Python)。您可以通过编写一个接收方法并返回方法的方法来制作更像 Python 的装饰器的东西。请注意有条件地定义内部方法的问题。
标签: julia