groovy学习3-语法学习

贴段练习代码,基本上包含了groovy强大的一些特性和语法

 

 

代码
   
     
package basic

/* *
* @author <a href="mailto:[email protected]">czy</a>
* @since 2010-3-27 15:13:48
*
*/
println
" helloworld "
println
" ----- "

// loop
for (i in 0 .. 2 )
println i
println
" ----- "

// upto
0 .upto( 2 ) {print " $it " }
println
" \n----- "

// times
3 .times {print " $it " }
println
" \n----- "

// step
0 .step ( 10 , 2 ) {print " $it " }
println
" \n----- "

// 系统运行
println " ping " .execute().text
println
" ----- "

println
" ping " .execute().getClass().name
println
" ----- "

println
" cmd /C dir " .execute().text
println
" ----- "

// ?.操作符
def foo(str){
str
? .reverse()
}
println foo(
' evil ' )
println foo(
null )
println
" ----- "

// exception
def openFile(fileName) {
new FileInputStream(fileName)
}

try {
openFile
" xxxx.txt "
}
catch (e){
println
" file not found: " + e
}
println
" ----- "

// 字符串条件判断-null
str = " hello "
if (str) println str
println
" ----- "

// 集合类型默认条件判断 null or empty
lst0 = null
println lst0
? ' lst0 true ' : ' lst0 false '
lst1
= [ 1 , 2 , 3 ]
println lst1
? ' lst1 true ' : ' lst1 false '
lst2
= []
println lst2
? ' lst2 true ' : ' lst2 false '
println
" ----- "

// <<操作符
lst = [ ' hello ' ]
lst
<< ' there '
println lst
println
" ----- "

// 运算符重载
class ComplexNumber {
def real, imaginary

def plus(other) {
new ComplexNumber(real: real + other.real, imaginary: imaginary + other.imaginary)
}

String toString() {
" $real ${imaginary > 0 ? '+' : ''} ${imaginary}i " }
}

c1
= new ComplexNumber(real: 1 , imaginary: 2 )
c2
= new ComplexNumber(real: 4 , imaginary: 1 )
println c1
+ c2
println
" ------ "

// return
def isPalindrome(str) { str == str.reverse() }
println
" mom is palindrome? ${isPalindrome('mom')} "
println
" ----- "

// == and is()
str1 = ' hello '
str2
= str1
str3
= new String( ' hello ' )
str4
= ' Hello '
println
" str1 == str2: ${str1 == str2} "
println
" str1 == str3: ${str1 == str3} "
println
" str1 == str4: ${str1 == str4} "
println
" str1.is(str2): ${str1.is(str2)} "
println
" str1.is(str3): ${str1.is(str3)} "
println
" str1.is(str4): ${str1.is(str4)} "
println
" ----- "

// 不可以省略;
class Semi {
def val
= 3 ;
{
println
" Instance Initializer called... "
}
}
println
new Semi()
println
" ----- "

// array
int [] arr = [ 1 , 2 , 3 , 4 , 5 ]
println arr
println
" class is " + arr.getClass().name
println
" ----- "

// dynmic

def takeHelp(helper) {
// ...
helper.helpMoveThings()
// ...
}

class Man {
void helpMoveThings() {
// ...
println " Man's helping "
}
// ...
}
class Woman {
void helpMoveThings() {
// ...
println " Woman's helping "
}
// ...
}
class Elephant {
void helpMoveThings() {
// ...
println " Elephant's helping "
}

void eatSugarcane() {
// ...
println " I love sugarcanes... "
}
// ...
}

takeHelp(
new Man())
takeHelp(
new Woman())
takeHelp(
new Elephant())
println
" ----- "

// clouse

def pickEven(n, block) {
for ( int i = 2 ; i <= n; i += 2 ) {
block(i)
}
}
pickEven(
10 ) { evenNumber -> println evenNumber }
pickEven(
10 , { println it })
total
= 0
pickEven(
10 ) { total += it }
println
" Sum of even numbers from 1 to 10 is ${total} "

product
= 1
pickEven(
10 ) { product *= it }
println
" Product of even numbers from 1 to 10 is ${product} "
// 闭包就是一个拥有参数的函数被绑定到上下文环境中来运行。

 

 

 

你可能感兴趣的:(groovy)