/*********
* groovy中Object類型存在隱式轉換 能夠沒必要使用as強轉
*/
Object munber = 9.343444
def number1 = 2
println munber - number1
if (number1 < munber) {
println '轉換了'
}
/************
* 測試groovy中空字符串運算
*/
def str1 = "8"
def str2 = "-1"
def str3 = "*2"
GroovyShell shell = new GroovyShell()
println shell.evaluate(str1 + str2)
println shell.evaluate(str1 + str3)
/**
* 測試字符串
*/
def str5 = 'java'
def str6 = 'java '
println str5 == str6
println str5.trim() == str6.trim()
/****
* 測試運算符號
*/
def num = 2
def num1 = 3
println num << num1
/****************
* 測試 進程
*/
println 'cmd /C dir'.execute().text
/**************
* 安全導航操做符的使用
* ?. 操做符只有對象引用不爲空時纔會分派調用
*/
def str7 = null
def str8 = 'jiao'
println str7?.reverse() // 不加問好會報錯 空指針異常
println str8.reverse()
/****
* 使用多賦值
*/
def fullName( fullname) {
fullname.split(' ')
}
def ( first, last ) = fullName ('jiao xi')
println " $first , $last"
/***********
* 多賦值
* 多餘的變量將會設置爲null , 多餘的值會被 丟棄 。
*/
def ( String cat , String mouse ) = [ 'Tom', 'Jerry', 'Tyke']
def ( String cat1 , String mouse1, String dog ) = [ 'Tom', 'Jerry']
println "$cat and $mouse "
println "$cat1 and $mouse1 and $dog "
/**************
* groovy 中的bool值斷定
*
* 類型 爲真的條件
* Boolean 值爲true
* Collection 集合不爲空
* Character 值不爲0
* CharSequence 長度大於0
* Iterator hasNext() 爲true
* Number Double值不爲0
* Map 該映射不爲空
* Matcher 至少有一個匹配
* Object[] 長度大於0
* 其餘任何類型 引用不爲null
*
*/
/****
* 閉包懶加載
*/
def number = 1 def eagerGString = "value == ${number}" def lazyGString = "value == ${ -> number }" assert eagerGString == "value == 1" assert lazyGString == "value == 1" number = 2 assert eagerGString == "value == 1" assert lazyGString == "value == 2"
/***********
* *操做符
*/
int function(int x, int y, int z) { x*y+z }
def args = [4,5,6]
assert function(*args) == 26