Groovy - AST 转换,一个实际示例

发布于 2024-08-20 11:56:15 字数 163 浏览 3 评论 0原文

AST 转换 在 Groovy 中实现。使用 AST 转换的实际示例是什么?

AST Transformations are implemented in Groovy. What's a practical example of using an AST Transformation?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

绝不放开 2024-08-27 11:56:15

此页面提供了如何使用的实际示例:
@Singleton、@Lazy、@Immutable、@Delegate、@Newify、@Category、@Mixin、@PackageScope

This page has practical examples of how to use:
@Singleton, @Lazy, @Immutable, @Delegate, @Newify, @Category, @Mixin, @PackageScope

絕版丫頭 2024-08-27 11:56:15

类似场景:

  • 授权检查 - 通过从上下文检查角色来实现安全性
  • 打印调用方法的参数值 断言
  • 参数不为空或任何验证
  • 检查方法的各种进入条件/先决条件
  • 通用 AOP 风格 BeforeMethod() 实现
  • 创建一个方法并将其标记为可运行或主方法运行

请查看我的博客文章 AST AOPAST 参数不为空

希望这有帮助!

Scenarios like:

  • Authorization Checking - Security by checking role from context
  • Print Parameter values with which the method is called
  • Asserts Parameters are not null or any validation
  • Check various entry-conditions/Pre-Conditions of the method
  • Generic AOP style BeforeMethod() implementation
  • Create a method and mark it to run as runnable or main method

Take a look at my blog post at AST AOP and AST Param not null

Hope this helps!

白首有我共你 2024-08-27 11:56:15

该页面提供了大多数使用 AST 转换的实际示例。我经常使用 @Delegate 委托给另一个类或 @Lazy 进行延迟加载。 @Grab 非常适合从 Maven/ivy 存储库中提取依赖项。所有这些都基于 AST 转换,并且是核心语言的一部分。

您也可以直接使用转换,但您想要的大部分内容都已经构建好了。您可以用其他语言做您可能想用 AOP 做的事情。

Most of the practical examples of using the AST transformations are provided on that page. I've often used @Delegate to delegate to another class or @Lazy for lazy loading. @Grab is great for pulling in dependencies from a Maven/ivy repository. All of those are based on AST transformations and are part of the core language.

You can use transformations directly too but most of the stuff you would want them for is already built. You can do things that you might want to do with AOP in other languages.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文