Groovy入門(mén)篇--Getting started

          Posted on 2007-08-15 12:43 puras 閱讀(2656) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): Groovy

          原文:http://groovy.codehaus.org/Tutorial+1+-+Getting+started

          譯者:puras

          1.設(shè)置Java環(huán)境

          Groovy需要Java,所以你需要有一個(gè)Java的可用版本(1.4或是更高).如果你還沒(méi)有安裝Java,可按照下面一步步的進(jìn)行:

          • http://java.sun.com上獲取最近的Java的發(fā)行版
          • 執(zhí)行安裝程序
          • 設(shè)置JAVA_HOME環(huán)境變量.在Window上的話(huà),參照下面的步驟:
          • 打開(kāi)系統(tǒng)屬性面板
          • 點(diǎn)擊高枝標(biāo)簽
          • 點(diǎn)擊環(huán)境變量按鈕
          • 添加一個(gè)新的系統(tǒng)變量,名為JAVA_HOME和Java的安裝目錄(我的是:D:\Program Files\jdk1.6.0)
          • 將%JAVA_HOME%\bin添加到你的系統(tǒng)路徑中(可選)

          2.設(shè)置Groovy環(huán)境

          下載頁(yè)下載Groovy的安裝文件或是二進(jìn)制文件,并跟隨說(shuō)明安裝.(當(dāng)前有一個(gè)問(wèn)題是將Groovy安裝在Windows下時(shí),安裝路徑中不能出現(xiàn)空格.所以,將默認(rèn)的安裝路徑c:\Program Files\Groovy替換成類(lèi)似于D:\groovy-1.0的路徑)

          或者

          • 網(wǎng)站上獲取一個(gè)Croovy發(fā)行版,并將它復(fù)制到你的硬盤(pán)上
          • 解壓Groovy的壓縮包,并將其放至到你硬盤(pán)上合適的位置.如D:\groovy-1.0-jsr-06
            • 添加一個(gè)環(huán)境變量GROOVY_HOME,并將其值設(shè)置為你的Groovy的安裝目錄,我的是D:\groovy-1.0
            • 打開(kāi)命令提示符,輸入"set",查看返回的結(jié)果看設(shè)置是否正確
          • 可將%GROOVY_HOME%\bin添加到你的系統(tǒng)路徑
          • 嘗試雙擊打開(kāi)Groovy發(fā)行版中的bin目錄下的groovyConsole.bat文件.如果它不能工作,打開(kāi)命令提示符,將目錄轉(zhuǎn)到bin目錄下,再次執(zhí)行它,看看有什么錯(cuò)誤信息

          3.設(shè)置可選的Jar文件

          你也許想要獲得一些可選的Jar文件,或是對(duì)應(yīng)于Groovy的模塊(詳細(xì)說(shuō)明查看模塊的文檔),或是對(duì)應(yīng)于想要用于Groovy的其他的Java類(lèi).下面列出了一些可能性:

          名稱(chēng) 來(lái)自于 描述
          jtds-version.jar

           http://jtds.sourceforge.net

          SQL Server和/或Sybase的數(shù)據(jù)庫(kù)驅(qū)動(dòng)
          hsqldb-version.jar http://www.hsqldb.org/ HSQLDB的數(shù)據(jù)庫(kù)驅(qū)動(dòng),一個(gè)100%的Java數(shù)據(jù)庫(kù)

          讓Groovy知道你添加的Jar文件的一個(gè)推薦的方式是將它們放到一個(gè)預(yù)先確定的位置.你所安裝的Groovy應(yīng)該包含一個(gè)名為"groovy-starter.conf"的文件.在這個(gè)文件中,在注釋的下面添加如下的一行:

          load ${user.home}/.groovy/lib/*

          "user.home"這個(gè)系統(tǒng)屬性由你的操作系統(tǒng)設(shè)置.(我的是c:\Document和Settings\puras.)現(xiàn)在將你的Jar文件放置到.groovy/lib目錄中.

          注:做為另一種選擇,你可以設(shè)置一個(gè)CLASSPATH變量,并確定它包含了你所添加的Jar文件,否則Groovy將以空的或是沒(méi)有CLASSPATH變量來(lái)工作.

          4.Hello World

          在groovyConsole窗口的頂部(打開(kāi)groovyConsole可以通過(guò)在Groovy下的bin中雙擊groovyConsole.bat文件,或是以命令提示符下輸入groovyConsole),輸入下面的代碼:

          println "Hello, World!"

          之后按下"Ctrl+R".

          groovyConsole下部的窗口會(huì)顯示:

          groovy> println "Hello, World!"

          Hello, World!

          (注:原文說(shuō)打印出來(lái)的文字將在Window的命令窗口中顯示,就是groovyConsole后面的黑色的窗口,但在我的機(jī)器是直接顯示在groovyConsole下部的窗口中的,應(yīng)該是原文所使用的Groovy的版本較老)

          以"groovy>"開(kāi)頭的一行文本是控制臺(tái)要處理的.而"Hello,World!"則是執(zhí)行的結(jié)果.

          接下來(lái)使用一些實(shí)際的值.用下面的一行來(lái)替換掉控制臺(tái)中的文本:

          123+45*67

          或是你喜歡的算術(shù)表達(dá)式,之后按下"Ctrl+R".(我將不再告訴你按下Ctrl+R,我想你已經(jīng)知道該如何做了).之后結(jié)果的值會(huì)顯示在groovyConsole的下部窗口中.

          5.變量

          你可以為變量賦上值,以備之后使用.嘗試下面的:

          x = 1
          println x

          x = new java.util.Date()
          println x

          x = -3.1499392
          println x

          x = false
          println x

          x = "Hi"
          println x

          6.Lists and Maps

          Groovy中內(nèi)置了兩種非常重要的數(shù)據(jù)類(lèi)型:List和Map(List可以操作Java中的數(shù)組).Lists被用于存儲(chǔ)有序的集合數(shù)據(jù).例如一個(gè)由你喜受的整型數(shù)組成的整型List,看起來(lái)像下面這樣:

          myList = [1776, -1, 33, 99, 0, 928734928763]

          你可以使用方括號(hào)來(lái)訪問(wèn)List中存儲(chǔ)的條目(索引從0開(kāi)始):

          println myList[0]

          輸出的結(jié)果應(yīng)該是:

          1776

          你可以使用"size"方法來(lái)獲取List的長(zhǎng)度:

          println myList.size()

          將輸出:

          6

          但通常你可能不需要這個(gè)長(zhǎng)度,因?yàn)椴幌馢ava,循環(huán)一個(gè)List的首選方法是使用"each"方法,將在下面的"Code as Data"部門(mén)中講解.

          另一個(gè)本地?cái)?shù)據(jù)類(lèi)型結(jié)構(gòu)稱(chēng)為Map.它被用于存儲(chǔ)"聯(lián)合數(shù)組"或是"字典".那是一個(gè)無(wú)序的不同種類(lèi)數(shù)據(jù)的集合.例如,就說(shuō)我們想存儲(chǔ)名字和智商,我們將會(huì)這樣做:

          scores = [ "Brett":100, "Pete":"Did not finish", "Andrew":86.87934 ]

          每個(gè)存儲(chǔ)在Map中的值都有不同的類(lèi)型.Brett的是一個(gè)整型,Pete的是一個(gè)字符串,而Andrew則是一個(gè)浮點(diǎn)數(shù).我們可以通過(guò)兩種主要的方式來(lái)訪問(wèn)Map中的值:

          println scores["Pete"]
          println scores.Pete

          將會(huì)輸出:

          Did not finish
          Did not finish

          向一個(gè)Map中添加數(shù)據(jù),語(yǔ)法與向一個(gè)List中添加數(shù)據(jù)相似.例如,如果Pete重新做了IQ測(cè)試,并得到了3,我們可以:

          scores["Pete"] = 3

          稍后我們?cè)偃∷闹?它將是3

          println scores["Pete"]

          將輸出3.

          另一方面,你可以用下面的方法來(lái)創(chuàng)建一個(gè)空的Map或是一個(gè)空的List:

          emptyMap = [:]
          emptyList = []

          確認(rèn)List為空,你可以執(zhí)行下面的語(yǔ)句:

          println emptyMap.size()
          println emptyList.size()

          將輸出List和Map的長(zhǎng)度為0.

          7.條件執(zhí)行

          在任何編程語(yǔ)言都非常重要的一個(gè)特征是在不同的條件下執(zhí)行不同的代碼的能力.最簡(jiǎn)單的方式是使用"if"結(jié)構(gòu).例如:

          amPM = Calendar.getInstance().get(Calendar.AM_PM)
          if (amPM == Calendar.AM)
          {
              println("Good morning")
          } else {
              println("Good evening")
          }

          不要擔(dān)心第一條語(yǔ)句,它僅僅是一些確定當(dāng)前時(shí)間是中午之前還是之后的代碼.代碼執(zhí)行的順序如下:首先是求括號(hào)里面的值,之后依靠這個(gè)值是"true"還是"false"來(lái)確定是執(zhí)行第一還是第二塊代碼.查看下面的布爾表達(dá)式.

          "else"塊不是必需的,但是"if"塊則是必需的:

          amPM = Calendar.getInstance().get(Calendar.AM_PM)
          if (amPM == Calendar.AM)
          {
              println("Have another cup of coffee.")
          }

          8.布爾表達(dá)式

          在大多數(shù)的編程語(yǔ)言中都有一種特殊的數(shù)據(jù)類(lèi)型,被用于表現(xiàn)真假值,"true"和"false".簡(jiǎn)單的布爾表達(dá)式就是那些簡(jiǎn)單的單詞.布爾值可以存儲(chǔ)在變量中,就像任何其他的數(shù)據(jù)類(lèi)型一樣:

          myBooleanVariable = true

          一些復(fù)雜的布爾表達(dá)式可使用一些布爾操作符:

          * ==
          * !=
          * >
          * >=
          * <
          * <=

          它們大部分都非常直觀.相等操作符是"==",要與賦值操作符"="區(qū)分開(kāi).與相等相反的是"!=",為不等.

          下面是一些例子:

          titanicBoxOffice = 1234600000
          titanicDirector = "James Cameron"

          trueLiesBoxOffice = 219000000
          trueLiesDirector = "James Cameron"

          returnOfTheKingBoxOffice = 752200000
          returnOfTheKingDirector = "Peter Jackson"

          theTwoTowersBoxOffice = 581200000
          theTwoTowersDirector = "PeterJackson"

          titanicBoxOffice > returnOfTheKingBoxOffice  // evaluates to true
          titanicBoxOffice >= returnOfTheKingBoxOffice // evaluates to true
          titanicBoxOffice >= titanicBoxOffice         // evaulates to true
          titanicBoxOffice > titanicBoxOffice          // evaulates to false
          titanicBoxOffice + trueLiesBoxOffice < returnOfTheKingBoxOffice + theTwoTowersBoxOffice  // evaluates to false

          titanicDirector > returnOfTheKingDirector    // evaluates to false, because "J" is before "P"
          titanicDirector < returnOfTheKingDirector    // evaluates to true
          titanicDirector >= "James Cameron"           // evaluates to true
          titanicDirector == "James Cameron"           // evaluates to true

          在"if"結(jié)構(gòu)中使用布爾表達(dá)式是非常有用的.例如:

          if (titanicBoxOffice + trueLiesBoxOffice > returnOfTheKingBoxOffice + theTwoTowersBoxOffice)
          {
              println(titanicDirector + " is a better director than " + returnOfTheKingDirector)
          }

          一個(gè)非常有用的測(cè)試是測(cè)試一個(gè)值或是表達(dá)式是否為空(沒(méi)有值).例如,我們想看看一個(gè)給定的Key是否存在Map中:

          suvMap = ["Acura MDX":"\$36,700", "Ford Explorer":"\$26,845"]
          if (suvMap["Hummer H3"] != null)
          {
               println("A Hummer H3 will set you back "+suvMap["Hummer H3"]);
          }

          一般null被用于指出在一些位置上沒(méi)有值.

          9.調(diào)試和解決問(wèn)題

          • 打印出你感興趣的變量的類(lèi)可以使用myVar.getClass().之后查看那個(gè)類(lèi)的文檔
          • 如果你有一個(gè)讓人頭痛的復(fù)雜的表達(dá)式,先將它分解成簡(jiǎn)單的表達(dá)式,并求值.之后再將它們組合成復(fù)雜的表達(dá)式
          • 嘗試重新啟動(dòng)groovyConsole(這將清除所有的變量,讓你重新開(kāi)始)
          • 從Groovy的User Guide中查看你所感興趣的主題

          10.如果你是一個(gè)Java程序員

          Feedback

          # re: Groovy入門(mén)篇--Getting started  回復(fù)  更多評(píng)論   

          2009-01-09 22:23 by 張三
          引用:請(qǐng)不要發(fā)表任何與政治相關(guān)的內(nèi)容
          國(guó)外的論壇網(wǎng)站不可能有這樣的規(guī)定!
          真是可笑!
          這就是中國(guó)特色的社會(huì)主義!
          和諧!

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          posts - 47, comments - 124, trackbacks - 0, articles - 0

          Copyright © puras

          主站蜘蛛池模板: 和政县| 泰安市| 原平市| 乐安县| 阳原县| 德清县| 邵东县| 连平县| 绿春县| 乌鲁木齐县| 易门县| 哈密市| 清徐县| 龙陵县| 湟中县| 兴安县| 林西县| 沙雅县| 栖霞市| 化德县| 南川市| 南和县| 成武县| 中西区| 贵溪市| 安宁市| 清河县| 灌云县| 喜德县| 高雄县| 永安市| 保康县| 甘谷县| 深州市| 静乐县| 麻阳| 晋城| 任丘市| 定襄县| 教育| 阿勒泰市|