gpt4 book ai didi

groovy - "Use"在 groovy 中如何工作?

转载 作者:行者123 更新时间:2023-12-04 00:47:45 24 4
gpt4 key购买 nike

您好,我有以下代码片段;

class StringCalci
{
static def plus(Integer self, Integer Operand)
{
return self.toInteger() * Operand.toInteger()
}
}
use (StringCalci)
{
println("inside the Use method!")
println( 12 + 3 )
}
println(12+3)

看到groovy中Use的使用,我惊呆了。问题是我可以在运行时向类添加方法(我自己的方法)。当我查看上面的代码时,我在想 Groovy 如何使事情成为可能! Useprintln 的使用是将两个给定的数字相乘(因为我有 Override the plus 方法),而外部 println 添加它!我的问题是 Groovy 如何识别 Use 中执行的 printlnUse 之外的 printlnUse 是关键字/方法吗?我需要了解这个过程的幕后情况。请告诉我:)提前致谢:)

最佳答案

欢迎来到动态语言的美妙世界,这里一切皆有可能,一切皆有可能!

此功能称为 Categories .至于实现:

  • use 实际上不是关键字而是 Groovy 运行时的方法 adds to the Object class ,这使得它随处可用。
  • 我认为功能主要在类 GroovyCategorySupport 中实现
  • 从 Javadoc 来看,它是基于在 ThreadLocal 中保留覆盖方法的映射,然后在每次方法调用时查询该映射。
  • 是的,这对性能来说不是很好,但是 Groovy 和类似语言提供的几乎所有动态“神奇”特性(而且有很多)也是如此。

关于groovy - "Use"在 groovy 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5443339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com