Groovy語(yǔ)法基礎(chǔ)一

一、簡(jiǎn)介

? ? ? ? 我們都知道:Groovy 語(yǔ)法與Java 語(yǔ)言的語(yǔ)法很相似,雖然 Groovy 的語(yǔ)法源于SmallTalk和Ruby這類語(yǔ)言的理念,但是可以將它想像成 Java 語(yǔ)言的一種更加簡(jiǎn)單、表達(dá)能力更強(qiáng)的變體。語(yǔ)法類似于Java,大大簡(jiǎn)化了Android開(kāi)發(fā)人員的學(xué)習(xí)時(shí)間,該文章主要記錄自己作為Java開(kāi)發(fā)人員來(lái)學(xué)習(xí)Groovy語(yǔ)法。

二、語(yǔ)法集合

1、關(guān)鍵字

??????? 關(guān)鍵字是編程語(yǔ)言的漢語(yǔ)拼音的AOE和英語(yǔ)的ABC,下面列出groovy關(guān)鍵字:

關(guān)鍵字

2、注釋

注釋主要有單行注釋、多行注釋、文檔注釋。分別如下所示:

//這是單行注釋

/**

*這是多行注釋

*/

/**

*這是文檔注釋

*@paramotherPerson

*@return

*/

String start(String args) {

"Hello${args}"

}

??????? 其中文檔注釋的主要作用是:

? ? ? ? a、type definitions (classes, interfaces, enums, annotations):類型定義(類、接口、枚舉、注解)

?? ? ?? b、fields and properties definitions:成員變量及屬性定義

? ? ? ? c、methods definitions:方法定義

3、標(biāo)識(shí)符

??????? 標(biāo)識(shí)符分為普通標(biāo)識(shí)符、引用標(biāo)識(shí)符。

? ? ? ? a、普通標(biāo)識(shí)符:標(biāo)識(shí)符第一個(gè)字符可以是字母、美元符號(hào)或者下劃線,但是不能是數(shù)字。后面可以跟隨字母和數(shù)字。下面看合法標(biāo)識(shí)符和非法標(biāo)識(shí)符:

//合法標(biāo)識(shí)符

def firstIdentifier;

def $secondIdentifier;

def _thirdIdentifier;

以及:

/**

*非法標(biāo)識(shí)符

*/

def 1firstIllegalIdenfier;

def second&Illegal*Identifier;

? ? b、引用標(biāo)識(shí)符:將標(biāo)識(shí)符放在單引號(hào)、多引號(hào)或者某些特殊字符(成對(duì)出現(xiàn)時(shí))中,可以被當(dāng)作引用標(biāo)識(shí)符:

/*單引號(hào)和多引號(hào)引用標(biāo)識(shí)符*/

def map=[:]

map."an identifier with a space and double quotes"="ALLOWED"

map.'with-dash-signs-and-single-quotes'="ALLOWED"

assert map."an identifier with a space and double quotes"=="ALLOWED"

assertmap.'with-dash-signs-and-single-quotes'=="ALLOWED"

以及

//特殊字符成對(duì)出現(xiàn)時(shí)的引用標(biāo)識(shí)符

map.'single quote'

map."double quote"

map.'''triple single quote'''

map."""triple double quote"""

map./slash string/

map.$/dollar slash string/$

4、字符串

??????? 字符串可以使用單引號(hào)'或雙引號(hào)"包括起來(lái)。有幾種字符串:

a、普通字符串

/**

*普通字符串,類似于Java字符串

*/

def str1 ="1234"

def str2 ='1234'

b、多行字符串

/**

*多行字符串,有三個(gè)單引號(hào)或者多引號(hào)構(gòu)成,輸出時(shí)行數(shù)不變

*/

defstr3 ='''

line1

line2

line3

'''

注意:不論是單行還是多行字符串, 都可以使用反斜杠轉(zhuǎn)義字符。例如:

println? 'an escaped single quote:\'needs a backslash'

結(jié)果是:

an escaped single quote: ' needs a backslash

c、內(nèi)插字符串:編譯器會(huì)把美元和花括號(hào)中的內(nèi)容替換成實(shí)際的值,內(nèi)插字符串中還可以進(jìn)行表達(dá)式計(jì)算。

/**

*內(nèi)插字符串

*/

def name ='Groovy !'//普通字符串

def greeting ="Hello${name}"http://內(nèi)插字符串

println greeting/*打印結(jié)果:Hello Groovy !*/

當(dāng)內(nèi)插字符串可以由前后的符號(hào)區(qū)分出的時(shí)候,花括號(hào)可以省略。

/**

*定義對(duì)象

*/

def person = [name:'lizihanglove',age:23]

//當(dāng)內(nèi)插字符串可以由前后的符號(hào)區(qū)分出的時(shí)候,花括號(hào)可以省略。

println "$person.name is $person.age years old!"

注意:當(dāng)使用內(nèi)插字符串的時(shí)候,字符串字面值是Groovy的字符串類型GString。這一點(diǎn)需要注意。普通的Java字符串是不變的,而GString是可變的。另外它們的哈希值也不同。因此在使用Map等數(shù)據(jù)類型的時(shí)候需要格外注意,避免使用GString作為Map的鍵。還有單引號(hào)及三個(gè)單引號(hào)是不能使用插值字符串的,下面是一些規(guī)則


字符串規(guī)則

??????? 上面列表中:

??????? interpolated表示是否支持插值,multiline表示是否支持多行,escape character表示轉(zhuǎn)義字符轉(zhuǎn)化時(shí)字符,如:

println? "line1\'line2"??????????????????????? //雙引號(hào)轉(zhuǎn)義字符用\

def str4 =$/ line1$/$ line2 /$?????????? //$/.../$字符串轉(zhuǎn)義結(jié)束符?$用$轉(zhuǎn)義

println str4????????????????????????????????????? //結(jié)果line1 /$ line2


下接 Groovy語(yǔ)法基礎(chǔ)二?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評(píng)論 19 139
  • //Clojure入門教程: Clojure – Functional Programming for the J...
    葡萄喃喃囈語(yǔ)閱讀 4,044評(píng)論 0 7
  • Groovy是一門基于JVM的動(dòng)態(tài)語(yǔ)言,很多語(yǔ)法和Java類似。大部分Java代碼也同時(shí)是合法的Groovy代碼。...
    樂(lè)百川閱讀 3,720評(píng)論 0 15
  • 官方文檔 注釋(Comments) 和Java一樣,支持單行(使用//)、多行(/* */)和文檔注釋(使用/**...
    yjiyjige閱讀 30,169評(píng)論 2 27
  • 晚飯,蒸紅薯就著油炸花生米。一顆兩顆從碟子里夾起,放進(jìn)嘴巴,咸香味彌漫開(kāi)來(lái)。突然想起童年趣事來(lái),說(shuō)與老公分享,卻一...
    錢毛閱讀 433評(píng)論 0 1

友情鏈接更多精彩內(nèi)容