這是一篇有關Groovy Shell的帖子,以及它如何在平常工做中爲您提供幫助(只要您是軟件開發人員)。不管您使用哪一種編程語言或技術,均可以從Groovy Shell中受益。惟一真正的要求是您可以編寫(和閱讀)小段Groovy代碼。html
我認爲Groovy shell的目的最好由官方文檔來描述:java
Groovy Shell,又名。groovysh是一個命令行應用程序,可輕鬆訪問以評估Groovy表達式,定義類並運行簡單的實驗。shell
Groovy Shell包含在Groovy編程語言的發行版中,能夠在<groovy home> / bin中找到。要啓動Groovy Shell,只需從命令行運行groovysh便可:編程
GROOVY_HOME\bin>groovysh Groovy Shell (2.2.2, JVM: 1.7.0) Type 'help' or '\h' for help. -------------------------------------------------------------------- groovy:000>
如今,您能夠在外殼中運行Groovy命令:閉包
groovy:000> println("hu?") hu? ===> null groovy:000>
它支持變量和多行語句:框架
groovy:000> foo = 42 ===> 42 groovy:000> baz = { groovy:001> return 42 * 2 groovy:002> } ===> groovysh_evaluate$_run_closure1@3c661f99 groovy:000> baz(foo) ===> 84 groovy:000>
我能夠清楚地推薦Console(2),它是笨拙的cmd窗口的小包裝。它提供了Tab支持,更好的文本選擇和其餘有用的功能。編程語言
不幸的是,在某些地區(包括德語)中,Groovy 2.2.0 Shell 在Windows 7/8上的箭頭鍵存在問題。可是,您可使用CTRL-P和CTRL-N代替UP和DOWN。做爲替代方案,您可使用舊的Groovy版本的外殼(來自Groovy 2.1.9的groovysh能夠正常工做)。工具
咱們能夠作的最明顯的事情是評估Groovy代碼。若是您正在使用Groovy的應用程序上工做,這將特別有用。性能
也許您知道可使用<<運算符將元素添加到列表中,可是不肯定該運算符是否適用於地圖?在這種狀況下,您能夠開始谷歌搜索或在文檔中查找。或者,您能夠將其鍵入Groovy Shell並查看其是否有效:開發工具
groovy:000> [a:1] << [b:2] ===> {a=1, b=2}
有用!
您不肯定是否能夠遍歷枚舉值?
groovy:000> enum Day { Mo, Tu, We } ===> true groovy:000> Day.each { println it } Mo Tu We ===> class Day
Groovy Shell可用於簡單的數學計算:
groovy:000> 40 + 2 ===> 42 groovy:000> groovy:000> 123456789123456789 * 123456789123456789123456789 ===> 15241578780673678530864199515622620750190521 groovy:000> groovy:000> 2 ** 1024 ===> 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216 groovy:000>
如您所見,Groovy能夠很好地處理可能致使其餘編程語言溢出的數字。Groovy使用BigInteger和BigDecimal進行這些計算。順便說一句,您能夠很快本身驗證一下:
groovy:000> (2 ** 1024).getClass() ===> class java.math.BigInteger
也許您須要某個網頁的內容?使用Groovy能夠輕鬆實現:
groovy:000> "http://groovy.codehaus.org".toURL().text<font></font> ===> <!DOCTYPE html><font></font> <html><font></font> <head><font></font> <meta charset="utf-8"/><font></font> <meta http-equiv="content-type" content="text/html; charset=utf-8"/><font></font> <meta name="description" content="Groovy Wiki"/><font></font> ...
也許出於某些緣由,您只想要<meta>標籤?
groovy:000> "http://groovy.codehaus.org".toURL().eachLine { if (it.contains('<meta')) println it } <meta charset="utf-8"/> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <meta name="description" content="Groovy Wiki"/> <meta name="keywords" <meta name="author" content="Codehaus Groovy Community"/> ===> null
我肯定您處於須要某些文本的url編碼版本的狀況:
groovy:000> URLEncoder.encode("foo=bar") ===> foo%3Dbar
固然,您無需記住確切的類和方法名稱。只需輸入前幾個字符,而後按Tab鍵便可得到可能的選項:
groovy:000> URL URL URLClassLoader URLConnection URLDecoder URLEncoder URLStreamHandler URLStreamHandlerFactory
它也適用於方法:
groovy:000> URLEncoder.e each( eachWithIndex( encode( every( every()
在切換到Groovy Shell以前,我出於幾乎相同的緣由使用了Python Shell(即便我根本沒有使用Python)。在過去的一年中,我使用了不少Groovy,很快我發現Groovy Web Console是用於測試和原型製做的很是有價值的工具。對我來講,Groovy Shell替換了這兩個工具。顯然,這是我不想錯過的開發工具。