{"data":{"allPost":{"edges":[{"node":{"slug":"/post/2023/08/swift-macro-revisited-the-strengths-and-essence-a5a4","title":"再探 Swift 宏 - 优势与本质","subtitle":"","isPublished":true,"createdTime":"2023-08-08T00:00:00.000Z","lastModifiedTime":null,"license":null,"tags":["Swift","宏"],"category":"编程","file":{"childMdx":{"excerpt":"通过 WWDC 2023，我们了解到 Swift 宏的目标是： 消除重复代码 让繁琐的事情变得简单 以软件包的形式与其他开发者分享 然而，这些目标并不是 Swift 宏所独有的。对于 Swift 中的许多代码重用手段而言，这些都是共同的目标，如函数、类型和模块。可以说，所有高级编程语言都希望实现这些目标。Swift 宏必须在其他方面有所胜出；否则的话没必要存在。 那么， Swift 宏到底擅长什么？ 这个问题的答案至关重要。 Swift 宏独一无二的优势会决定它的本质：这可以指导我们创作有效的 Swift 宏、告诉我们在创作宏时的行为边界，并最终帮助我们产出良好设计的 Swift…"}}}},{"node":{"slug":"/post/2023/08/swift-macro-revisited-traps-and-pitfalls-1034","title":"再探 Swift 宏 - 陷阱与缺陷","subtitle":"","isPublished":true,"createdTime":"2023-08-10T00:00:00.000Z","lastModifiedTime":null,"license":null,"tags":["Swift","宏"],"category":"编程","file":{"childMdx":{"excerpt":"在之前的文章中，我们学习了使得 Swift 宏独一无二的优势和本质。文中的示例工作正常，但是我们现在可以放心大胆地实现任何 Swift 宏了吗？ 答案是否定的。 给 Swift 宏带来优势的特性也会引入陷阱与缺陷，从而让程序员自己给自己造成麻烦。在本文中，我想向你展示我发现的一些问题以及避免它们的方法。 陷阱与缺陷 控制流的潜在混乱 在之前的文章中的  #unwrap  示例中，Swift 宏展开可能涉及到 控制流操控 和 词法作用域共享 ： 展开之前： 展开之后： 由于示例宏展开中涉及控制流的  return…"}}}}]}},"pageContext":{"slug":"/zh-Hans/tag/宏","locale":{"identifier":"zh-Hans","slug":"/zh-Hans"},"title":"Tags > 宏","showsPageTitle":true,"keywords":["WeZZard","Pieces of My Soul"],"description":"","items":["c743b528-1454-53f9-9a0b-8aebda6e8d68","bfebcd5e-37cf-5ace-be71-d0ea1b5d8e48"],"paginationInfo":{"basePath":"/zh-Hans/tag/宏","pageIndex":0,"pagesCount":1,"previousPageTitle":"Earlier Posts","nextPageTitle":"Later Posts"}}}