在groovy中使用"use"关键字/方法有什么用?

Ant*_*t's 23 groovy

use在Groovy中读取了关键字.但是,由于它已被完全使用,所以无法提出.而且我也有类别课程,在这个主题下,那也是什么?来自,Groovy In Action

class StringCalculationCategory {
  static def plus(String self, String operand) {
    try {
      return self.toInteger() + operand.toInteger()
    } catch (NumberFormatException fallback) {
      return (self << operand).toString()
    }
  }
}

use (StringCalculationCategory) {
  assert 1 == '1' + '0'
  assert 2 == '1' + '1'
  assert 'x1' == 'x' + '1'
}
Run Code Online (Sandbox Code Playgroud)

有了上面的代码,谁能说use在groovy中使用关键字有什么用?以及上面的代码是做什么的?

Ada*_*dam 22

皮条客我的图书馆模式什么use呢.

在您的情况下,它会使String.add(something)操作员超载.如果两个字符串都可以用作整数(toInteger()不抛出异常),则返回这两个数字的总和,否则返回字符串的串联.


Sim*_*wsi 13

如果您有一个没有源代码的类(例如在库中)并且您想要为该类添加新方法,则use非常有用.

顺便说一句,这个帖子在达斯汀马克思的博客通过实际活动的启发指出:

使用"keyword"实际上不是关键字,而是Groovy的Object类GDK扩展的方法,并通过Object.use(Category,Closure)提供.Groovy GDK对象上提供了许多其他方法,可以方便地访问功能,并且可能看起来像语言关键字或函数,因为它们不需要对象的名称来继续它们.我倾向于不在我的Groovy脚本中使用这些名称(例如is,println和sleep)来避免潜在的可读性问题.

还有其他类似的"关键字"实际上是Object类的方法,例如with.在Groovy的JDK文档具有这样的方法列表.