2011-03-22 102 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有這樣的方法的列表。

相關問題