可以在D中编写自定义装饰器吗?与python类似,

car*_*ted 5 d

在python中你有一个函数装饰器.是否有可能在D中做类似的事情?就像是:

@memoize("expensiveCalc")
int expensiveCalc(string foo){
    ///bar
}
Run Code Online (Sandbox Code Playgroud)

Dej*_*kic 8

对的,这是可能的.但是,在D中,它被称为"用户定义属性"(UDA).它最近在D中被引入,从那以后人们越来越多地使用它来注释它们的功能.

  • 用户定义属性与python装饰器完全不同,后者可以包装甚至完全替换函数体. (2认同)