在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ 一些前提知識(shí)
Groovy 介紹
腳本類、文件 I/O 和 XML 操作
更多
一些前提知識(shí)
Gradle 工作流程
基本組件
題外話
總結(jié)
Gradle 編程模型及 API 實(shí)例詳解
閉包
Gradle 介紹
閑言構(gòu)建
Groovy 中的數(shù)據(jù)類型

一些前提知識(shí)

一些前提知識(shí)

為了后面講述方面,這里先介紹一些前提知識(shí)。初期接觸可能有些別扭,看習(xí)慣就好了。

  • Groovy 注釋標(biāo)記和 Java 一樣,支持//或者/**/
  • Groovy 語(yǔ)句可以不用分號(hào)結(jié)尾。Groovy 為了盡量減少代碼的輸入,確實(shí)煞費(fèi)苦心
  • Groovy 中支持動(dòng)態(tài)類型,即定義變量的時(shí)候可以不指定其類型。Groovy 中,變量定義可以使用關(guān)鍵字 def。注意,雖然 def 不是必須的,但是為了代碼清晰,建議還是使用 def 關(guān)鍵字
def variable1 = 1   //可以不使用分號(hào)結(jié)尾  
def varable2 = "I am a person"
def  int x = 1   //變量定義時(shí),也可以直接指定類型  
  • 函數(shù)定義時(shí),參數(shù)的類型也可以不指定。比如
String testFunction(arg1,arg2){//無(wú)需指定參數(shù)類型  
  ...
}
  • 除了變量定義可以不指定類型外,Groovy 中函數(shù)的返回值也可以是無(wú)類型的。比如:
//無(wú)類型的函數(shù)定義,必須使用 def 關(guān)鍵字  
def  nonReturnTypeFunc(){
     last_line   //最后一行代碼的執(zhí)行結(jié)果就是本函數(shù)的返回值  

}
//如果指定了函數(shù)返回類型,則可不必加 def 關(guān)鍵字來(lái)定義函數(shù)  
String  getString(){
   return "I am a string"
}

其實(shí),所謂的無(wú)返回類型的函數(shù),我估計(jì)內(nèi)部都是按返回 Object 類型來(lái)處理的。畢竟,Groovy 是基于 Java 的,而且最終會(huì)轉(zhuǎn)成 Java Code 運(yùn)行在 JVM 上

  • 函數(shù)返回值:Groovy 的函數(shù)里,可以不使用 return xxx 來(lái)設(shè)置 xxx 為函數(shù)返回值。如果不使用 return 語(yǔ)句的話,則函數(shù)里最后一句代碼的執(zhí)行結(jié)果被設(shè)置成返回值。比如
//下面這個(gè)函數(shù)的返回值是字符串"getSomething return value"
def getSomething(){
      "getSomething return value" //如果這是最后一行代碼,則返回類型為 String
      1000 //如果這是最后一行代碼,則返回類型為 Integer
}

注意,如果函數(shù)定義時(shí)候指明了返回值類型的話,函數(shù)中則必須返回正確的數(shù)據(jù)類型,否則運(yùn)行時(shí)報(bào)錯(cuò)。如果使用了動(dòng)態(tài)類型的話,你就可以返回任何類型了。

  • Groovy 對(duì)字符串支持相當(dāng)強(qiáng)大,充分吸收了一些腳本語(yǔ)言的優(yōu)點(diǎn):
1  單引號(hào)''中的內(nèi)容嚴(yán)格對(duì)應(yīng) Java 中的 String,不對(duì)$符號(hào)進(jìn)行轉(zhuǎn)義  
   def singleQuote='I am $ dolloar'  //輸出就是 I am $ dolloar
2  雙引號(hào)""的內(nèi)容則和腳本語(yǔ)言的處理有點(diǎn)像,如果字符中有$號(hào)的話,則它會(huì)$表達(dá)式先求值。  
   def doubleQuoteWithoutDollar = "I am one dollar" //輸出 I am one dollar
   def x = 1
   def doubleQuoteWithDollar = "I am $x dolloar" //輸出 I am 1 dolloar
3 三個(gè)引號(hào)'''xxx'''中的字符串支持隨意換行 比如  
   def multieLines = ''' begin
     line  1 
     line  2
     end '''
  • 最后,除了每行代碼不用加分號(hào)外,Groovy 中函數(shù)調(diào)用的時(shí)候還可以不加括號(hào)。比如:
println("test") ---> println "test"

注意,雖然寫代碼的時(shí)候,對(duì)于函數(shù)調(diào)用可以不帶括號(hào),但是 Groovy 經(jīng)常把屬性和函數(shù)調(diào)用混淆。比如

def getSomething(){
   "hello"
}
getSomething()   //如果不加括號(hào)的話,Groovy 會(huì)誤認(rèn)為 getSomething 是一個(gè)變量。比如:  

http://wiki.jikexueyuan.com/project/deep-android-gradle/images/4.jpg" alt="" />

所以,調(diào)用函數(shù)要不要帶括號(hào),我個(gè)人意見(jiàn)是如果這個(gè)函數(shù)是 Groovy API 或者 Gradle API 中比較常用的,比如 println,就可以不帶括號(hào)。否則還是帶括號(hào)。Groovy 自己也沒(méi)有太好的辦法解決這個(gè)問(wèn)題,只能兵來(lái)將擋水來(lái)土掩了。

好了,了解上面一些基礎(chǔ)知識(shí)后,我們?cè)俳榻B點(diǎn)深入的內(nèi)容。