5 Comments

@attached(preamble)有个挺好的用法是实现python @lru_cache

Expand full comment

這個用法很不錯,語法上應該也完全相同!

只是現有提案好像無法實現:preamble 在 function 內容前插入「查詢 cache ,hit 就 early return」,但若 cache miss,要走過原先 function 定義的內容才能獲得結果,但 defer 是無法獲取這結果。

另一個討論是更強大的 defer (可獲得 return result,throw 等),但得另起爐灶

Expand full comment

重新看了一下, proposal里有个BodyMacro @AssumeMainActor 就是通过body replacement实现的, 所以用BodyMacro应该就能实现@lru_cache了吧

Expand full comment

對,你說的沒錯,body 有兩種:完全擴充和基於現有的增加

Expand full comment

确实, 拿不到返回值是个很麻烦的问题

Expand full comment