這是一篇有關Groovy Shell的帖子,以及它如何在日常工作中為您提供幫助(只要您是軟件開發人員)。無論您使用哪種編程語言或技術,都可以從Groovy Shell中受益。唯一真正的要求是您能夠編寫(和閱讀)小段Groovy代碼。
入門
我認為Groovy shell的目的最好由官方文檔來描述:
Groovy Shell,又名。groovysh是一個命令行應用程序,可輕松訪問以評估Groovy表達式,定義類並運行簡單的實驗。
Groovy Shell包含在Groovy編程語言的發行版中,可以在
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>
- (請注意,您必須跳過def關鍵字,以便以后使用變量和閉包)
Windows用戶須知
我可以清楚地推薦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>
...
也許出於某些原因,您只想要 標簽?
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替換了這兩個工具。顯然,這是我不想錯過的開發工具。
技術類文章精選
- java一行代碼打印心形
- Linux性能監控軟件netdata中文漢化版
- 接口測試代碼覆蓋率(jacoco)方案分享
- 性能測試框架
- 如何在Linux命令行界面愉快進行性能測試
- 圖解HTTP腦圖
- 將swagger文檔自動變成測試代碼
- 五行代碼構建靜態博客
- 基於java的直線型接口測試框架初探
- JUnit中用於Selenium測試的中實踐