Groovy基本語法-注釋及標識符
"冰凍三尺,非一日之寒"
中華文明上下五千年,老祖宗們在漫長歲月中積累沉澱的治理名言,文字已經錘鍊得出神入化。誠如"冰凍三尺,非一日之寒"。學習是一個漫長積累的過程,每天進步一點點,日積月累,貴在堅持。
廢話不多說,我們來開始學習Groovy語法。
Groovy的語法源自Java語言的語法,但是做了很多簡化,從語言層面上就比Java敏捷。由於知識點比較多,篇幅有限,我們分成幾部分來講,主要是舉一些例子,幫助童鞋們理解用法及加深印象。
注釋
Groovy中的注釋語法與Java語言語法完全一致,單行注釋使用雙斜線 // 來表示注釋的開始,一直到行尾,即遇到換行符之前都是單行注釋的內容,
同樣多行注釋使用 /* 符號開始, 之後所有的字元,包括換行符,直到遇到第一個 */ 符號之間的內容,都是多行注釋。
例:
// 這是獨立的單行注釋
println "Hello world." // 跟隨在語句後的單行注釋
/* 只有一行的多行注釋 */
/*
跨行的多行注釋
*/
println /* 在語句中間的多行注釋 */ "Hello world."
println "Hello world." /* 在行尾的多行注釋 */
文檔注釋
如果使用Java做過開發的童鞋一定知道JavaDoc的重要性。平時我們查找Java API文檔是看到的內容,就是JavaDoc工具從Java代碼的文檔注釋提取並生成的。
Groovy同樣也支持文檔注釋,語法也和JavaDoc一樣, 使用 /** 開始,可以跨多行,直到遇到第一個 */ 符號結束。通常文檔注釋被用於描述類型定義,如類、介面、枚舉、欄位及屬性的描述、方法定義等。
例:
/**
* 文件工具類,提供對目錄、文件的基本操作。
* 本工具類簡化文件及目錄的創建、刪除、更新等操作,也支持這些操作的監聽事件及處理回調。
* @version 1.0
*/
class FileUtils {
/** 事件回調定義 */
def eventCallback
/**
* 遞歸刪除指定路徑下的文件及目錄
* @param path 指定路徑,必須是一個目錄
* @return 被刪除的文件總數
* @throws IOException 當無法進行刪除操作,則拋出IOException
*/
long removeDir(String path) throws IOException {
...代碼略
}
}
從例子可以看出,這是一個工具類,簡化文件操作,並可以很明確地知道,有一個刪除目錄的方法,並且這個方法能夠刪除指定目錄下包括子目錄的所有文間。
所以說文檔注釋對於開發者有著非常重要的作用。當我們寫出一個功能而需要別人調用的時候,清晰的文檔會事半功倍。甚至長時間以後,開發者本身也會忘記當初自己代碼為什麼要這麼寫,所以要記住,代碼是寫給人看的,不是讓機器看的,機器只是按照預定的邏輯執行而已。
開發的過程中,一定要寫注釋!
開發的過程中,一定要寫注釋!
開發的過程中,一定要寫注釋!
重要的事情說三遍!
Shell聲明注釋
在Unix/Linux/MacOS操作系統下,編寫過腳本文件一定會記得腳本文件第一行要用
來聲明此腳本的執行環境。同樣,前面我們通過安裝包安裝了Groovy環境,並且在命令行已經可以執行了,以後就可以把Groovy腳本當作Shell腳本來用。
方法就是創建一個 shell 腳本,第一行聲明為
這個腳本文件就可以按照Groovy語法來寫。
例如我們創建一個名為 test.sh 的腳本文件並編輯,輸入內容如下:
#!/usr/bin/env groovy
println "Hello world."
保存腳本後,將腳本修改為可執行屬性,執行一下就可以看到結果了:
chmod +x test.sh
./test.sh
輸出結果:
Hello world.
如果做運維的童鞋,是不是感覺眼前豁然開朗,感覺又找到了一件大殺器:)
標識符
Groovy中標識符以字母,美元符號或下劃線開始,後面跟隨字母或數字組成的。字元範圍如下:
注意,Java平台下的字母是UTF-8範圍的,而不僅僅是ASCII 7的範圍,也就是說,如果願意,完全可以使用漢字作為標識符。
例如:
是完全沒有錯誤的寫法。
Groovy里規定,當在一個點符號後面,所有點關鍵字也是合法的標識符,通常這種用法用在一個對象上。
例如:
引用標識符
引用標識符出現在一個點式表達式的點後面,這點在Java語言中是不允許的。例如創建了一個user的對象,其中有一個loginId的屬性,就可以通過這種方式來引用,這是一個有趣的特性,我們來展示一種用法:
為了說明這個用法,不涉及到這個特性到代碼盡量用Java來定義了:
class User {
String loginId
String password
}
User user = new User()
user."loginId" = "a"
user."password" = "b"
String[] properties = new String[2]
properties[0] = "loginId"
properties[1] = "password"
for(String p : properties) {
println user."$"
}
assert user.loginId == "a"
assert user.password == "b"
這段代碼一開始定義了一個User類,包含兩個屬性 loginId 及 password,然後使用這個類創建出一個 user 對象並對兩個進行賦值,最後通過屬性名獲取對應的值。如果同樣的功能在Java中,只能通過反射進行操作,大大增加了複雜度。而且這段代碼並沒有完全按照Groovy語法來寫,如果完全按照Groovy語法來寫,會更加簡潔。
Groovy里,所有的字元串類型字面量都允許寫到 . 符號後作為引用標識符:
這幾種字元串類型,是Groovy相對Java改進里很多的一個功能,使得字元串類型好用多了。
因篇幅原因,欲知詳情,且聽下回分解。
TAG:全球大搜羅 |