1. 程式人生 > >Groovy基本語法(2)

Groovy基本語法(2)

4、靜態import

我是最早在.net framework 3.5上使用類似import static這種語法的,用起來相當方便的說,但JDK一直沒有引入這玩意兒,按道理說加上這麼個小功能是很容易實現的。不過Groovy倒是帶來來功能更強大的import static語法,用起來也很方便:

package plswg.edu.groovy.basic


// 將Integer類的MAX_VALUE靜態成員變數引入
import static Integer.MAX_VALUE

// 將Double類的parseDoubl靜態成員方法引入
import static Double.parseDouble

// 給靜態引入賦予別名
import static Boolean.TRUE  as T		// 將Boolean.TRUE取名為T
import static Boolean.FALSE as F		// 將Boolean.FALSE取名為F

// 給靜態引入的方法賦予別名
import static Calendar.getInstance as now


// 程式碼中凡是用到MAX_VALUE, 指的都是Integer.MAX_VALUE
println MAX_VALUE


// 程式碼中凡是用到parseDouble, 指的都是Double.parseDouble
s = "123.123"
println parseDouble(s);	


// 程式碼中凡是使用T的地方表示true,使用F的地方表示false
println T
println !T
println F


// 程式碼中凡是使用now的地方表示Calendar.getInstance
println now().get(Calendar.HOUR)
      這玩意兒的主要作用就是避免重複書寫哪些又臭又長的類名,隨著JDK類庫的不斷增加,類名字是越來越長,像造句一樣,import static恰好解決了這一問題,還是很貼心的。

5、分支結構語句

Groovy的結構化語句仍舊是三種:順序結構、分支結構和迴圈結構,其中分支結構和迴圈結構增加了很多意想不到的功能,先看分支結構:

package plswg.edu.groovy.basic

// groovy中if條件分支的新規定

// groovy中,非0的數值可以表示true
int num = 0
if (num) {
	println "True"
} else {
	println "False"
}

println (++num ? "True" : "False")

if (!!num) {		// !!運算子可以將num轉化為boolean型別
	println "num=${num}為${!!num}"
}
println ""


// 引用為null時,表示false
Object o = null
if (o) {
	println "True"
} else {
	println "False"
}
o = new Date()
if (o) {
	println "True"
} else {
	println "False"
}
println ""


// 字串為""時,表示false
String s = ""
if (s) {
	println "True"
} else {
	println "False"
}
s += "hello"
if (s) {
	println "True"
} else {
	println "False"
}
println ""


// 集合為空時,表示False
ArrayList array = new ArrayList()
if (array) {
	println "True"
} else {
	println "False"
}
array.add(100)
if (array) {
	println "True"
} else {
	println "False"
}
println ""


// groovy中switch選擇分支的新規定

// switch對字串型別的支援

print "Please input your words: "
s = new BufferedReader(new InputStreamReader(System.in)).readLine()

switch (s) {
case "how are you":
	println "fine, thank you"
	break;
case "how do you do":
	println "how do you do too"
	break;
default:
	println "nice to meet you"
}


// switch對集合和範圍的支援
n = new Random().nextInt(101)
print "you got ${n} point, "
switch (n) {
case [98, 99, 100]:		// n為98, 99, 100這三個數字時
	println "very good!!"
	break;
case 90 .. 97:			// n為90-97之間時
	println "nice job!!"
	break;
case 70 .. 89:			// n為70-89之間時
	println "good"
	break;
case 60 .. 79:			// n為60-79之間時
	println "can be better"
	break;
case {it > 0 && it < 60}:	// n比0大且比60小時
	println "too bad"
	break;
case 0:					// n為0時
	println "nothing to say"
	break;
}
       首先,Groovy對boolean型別放寬了限制:
  • 常量true和false分別表示“真”和“假”;
  • null表示false,非null表示true;
  • 空字串""表示false,非空字串表示true;
  • 0表示false,非0表示true;
  • 空集合表示false,非空集合表示true;
      好了,從這一角度上,Groovy確實和Javascript或者PHP非常相似了,用起來非常方便。

      Groovy中對於switch語句的修改也是非常誇張的,這讓我甚至有些懷疑Groovy中的switch是否還能達到O1的執行效率,因為Groovy的swtich表現的太像巢狀的if...else if了,在例子中,switch的case後面可以跟隨如下幾種玩意兒:

  • 常量,在Groovy中,case後的常量包括數值型常量或字串型別常量,方便很多了,JDK7中新增加了使用字串常量的case語句,而在.net framework 1.1中早就有了,諸如Basic,PHP,Python,Javascript等指令碼,更是一開始就支援字串常量的case語句;
  • Range:即範圍,語法 n1 .. n2 表示n1和n2之間的所有數值n(n1 <= n <= n2);
  • Collection:集合,語法 [a1, a2, a3, ... , an],表示由中括號中的n個元素構成的集合,其中各個元素型別不必統一;
  • 閉包:由 { 語句 } 構成的匿名函式體,這個後面會重點講述,這裡只要知道,一旦case之後的閉包返回true,則冒號之後的程式碼將會執行;
      總之Groovy對分支語句的改造,讓其更符合主流動態語言的特點,目前大家都在玩動態語言,就算強型別語言例如C#也在向動態語言方向靠攏,C++有泛型可以一直淡定,Java也有泛型,但那就不是個玩意兒。Groovy這下改的徹底,該有的全都有了!

相關推薦

Groovy基本語法(2)

4、靜態import 我是最早在.net framework 3.5上使用類似import static這種語法的,用起來相當方便的說,但JDK一直沒有引入這玩意兒,按道理說加上這麼個小功能是很容易實現的。不過Groovy倒是帶來來功能更強大的import static語法

python基本語法2.8--找出100以內的素數

string color utf-8 blog ring div prim style odi 問題描述:找出某一範圍內的素數 思路:給每個數字作標註     首先,要循環遍歷到該範圍內的所有數,一個大循環     然後,遍歷2到n-1。看是否能被整除 代碼: # -*-

js --基本語法2

複習 :1. JS 引入方式 1. 元素事件繫結 onclick = "JS 語句" 2. <script> JS 程式碼 </script> 3. 外部JS檔案 <script src=""></script>2. JS 資料型別 Number String

groovy基本語法--XML及HTML

1、groovy對XML及HTML的支援       Groovy 引入了一些全新的、更加合理的方法來建立和處理 XML及HTML。程式碼更加簡潔,更具表達性。 XML標記構建器Groovy支援基於

基本語法2-流程控制_練習

寫出結果。 class Demo { public static void main(String[] args) { int m=0,n=3; if(m>0) if(n>

Groovy基本語法(1)

2、Starting Groovy        相比於一個傳統的Java類,一個包含main方法的Groovy類可以如下書寫: 程式碼1:具有main函式的Groovy類 package plswg.edu.groovy.basic // 利用class關鍵字建立一個

scala學習計算開始基本語法2

上接scala學習開始基本語法1 第五步:陣列的使用 在scala中,可以使用new來例項化物件,當你建立一個數組物件的時候,你可以使用數值或者是型別引數。但是在scala中,是使用[]來指明物件,java是使用<>。如下程式碼 package

J2SE習題—基本語法2

1.用1元5角錢人民幣兌換5分、2分和1分的硬幣(每一種都要有)共100枚,問共有幾種兌換方案?每種方案各換多少枚? 2.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數

Groovy基本使用(2):基本語法

Groovy 基本語法Groovy 是一種動態型別的 JVM 敏捷開發語言,基本的語法和 Java 十分相似,很多關鍵字直接使用 Java 的關鍵字,如:import 匯入類,//、/**/ 標記註釋,使用和 Java 類似運算子 等等;一個基本的示例Helloworld.g

2.基本語法

下劃線 變量的數據類型 註意 算術 語法 區別 區分 while 分類 1.關鍵字 & 標識符 關鍵字:被Java語言賦予了特殊含義,用做專門用途的字符串(單詞) 保留字:未來可能會被使用 標識符:凡是自己可以起名字的地方都叫標識符 命名的規則:(一定要遵守,不遵守

Go學習(2):基本語法

基本語法 一、二進位制、八進位制、十進位制、十六進位制【擴充套件內容】 1.1 進位制 二進位制:逢二進一,數值只有0和1。 八進位制:逢八進一,數值有0,1,2,3,4,5,6,7 十進位制:逢十進一,數值有0,1,2,3,4,5,6,7,8,9 十六進位制:逢十六

2 資料庫基本語法sqlite3

資料庫基本語法(增刪改查) SQL structured query language 結構化查詢語言。專門對資料庫進行查詢、增加、修改、刪除、統計的操作語言。 CURD增刪查改 create update retrieve delete 書寫風格,關鍵字大小寫都行,建議大寫。表名大

2章: Python語言基本語法元素

目錄 考綱考點 知識導圖 1、程式的格式框架 縮排 註釋 2、語法元素的名稱 變數 命名 保留字 3、資料型別 資料型別概述 數字型別 字串 4、程式的語句元素 表示式 賦值語句 其他語句 分支語句 迴圈語句 5、基

scala學習(2)-基本語法--for迴圈和if語句

上一篇部落格我對scala做了最基本的講述吧,主要是我就知道那麼多,哈哈,好啦,今天我們看看在任何語言中我們用的最多的兩種語句吧。一猜就中,for和if語句。 當然開始之前我們還是說一下在scala中的變數的定義怎麼來。 變數 在scala中如果要定義

[2] CSS&javascript(基本語法及使用)

一、     CSS概述 1、CSS是什麼?  * CSS (CascadingStyle Sheets)指層疊樣式表 2、CSS有什麼作用?       *CSS就是用來修飾HTML 3、CSS程式碼規範                    *CSS程式碼一般寫在&l

Z 2. CSS選擇器基本語法

CSS選擇器的語法比XPath更簡單一些,但功能不如XPath強大。實際上,當我們呼叫Selector物件的CSS方法時,在其內部會使用Python庫cssselect將CSS選擇器表示式翻譯成XPath表示式,然後呼叫Selector物件的XPATH方法。

7-2 jmu-Java-02基本語法-08-ArrayList入門

7-2 jmu-Java-02基本語法-08-ArrayList入門 (10 分) 本習題主要用於練習如何使用ArrayList來替換陣列。 新建1個ArrayList strList用來存放字串,然後進行如下操作。 提示:查詢Jdk文件中的ArrayList。 注意:請使用System

【1】Groovy語言學習:groovy語言簡介及基本語法

Groovy是一種基於JVM的敏捷開發語言,它結合了Python、Ruby和Smalltalk的許多強大的特性。 一、groovy是什麼 簡單地說,Groovy 是下一代的java語言,跟java一樣,它也執行在 JVM 中。作為跑在JVM中的另一種語言

XML學習2:XML基本語法(一)

       匯入        一個XML檔案可分為如下幾部分內容:文件宣告 、元素、屬性、註釋 、CDATA區 ,特殊字元 、處理指令 (processing instruction)等。    

Swift基礎1.2——基本語法—Optional 可選項

本打算用一篇完整把Swift的基礎語法寫完,但看了一下以前整理的內容,看來是不可能了。 Optional 是 Swift 的一大特色定義變數時,如果指定是可選的,表示該變數可以有一個指定型別的值,也