2011-03-22 50 views
21

我在Groovy中读取了use关键字。但不能出来,因为它已被完全使用。而且我也来类别类,在这个话题下,这是什么呢?而从的,Groovy在行动groovy中“使用”关键字/方法的用法是什么?

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' 
} 

与上面的代码,任何人都可以讲是在常规使用use关键字?而且上面的代码是做什么的?

+0

嘿男人,是否值得你学习groovy?我正在阅读同一本书和男人,这有点具有挑战性 – 2012-06-17 13:52:53

+4

@simon:它是一本很好的书,你可以找到! – 2012-06-18 15:53:10

回答

17

请参阅Pimp My Library Pattern了解use的功能。

在你的情况下,它超载String.add(something)运营商。如果两个字符串都可以用作整数(toInteger()不会引发异常),则返回这两个数字的和,否则返回字符串的串联。

11

使用如果你有一个你没有源代码的类(例如在一个库中)并且你想向该类添加新的方法,它是非常有用的。

顺便说一句,this post在达斯汀马克思的博客通过实际活动的启发状态:

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

还有其他类似的“关键字”实际上是对象类的方法,如Groovy JDK documentation有这样的方法的列表。

相关问题