Groovy特殊语法

来源:互联网 发布:易语言cf透视源码 编辑:程序博客网 时间:2024/06/05 18:58

Groovy特殊语法

1、多赋值

(1) Groovy可以返回一个数组,然后赋值给左侧表达式。左侧表达式必须以逗号分隔,放在圆括号中。
def splitName(fullname) {fullname.split(',')}(firstName, lastName) = splitName("Michael,Jordan")print "$lastName, $firstName" // Jordan, Michael
(2) 使用数组来赋值
交换两个变量的值。

name1="Michael"name2="James"(name1, name2) = [name2, name1]println "$name1, $name2" // James, Michael
左侧较少时,多余值会被抛弃
(name1, name2, name3) = ["Michael", "James", "Kavin", "Steven"]println "$name1, $name2, $name3" // Michael, James, Kavin
左侧较多时,被设置为null
(name1, name2, name3) = ["Michael", "James"]println "$name1, $name2, $name3" // Michael, James, null

2、相等操作

(1) Groovy将==映射到equals方法,而is方法映射到==方法。
name1="Michael"name2=new String("Michael")name3=name2println name1 == name2println name2 == name3println name1.is(name2) println name2.is(name3)
返回
true
true
false
true

class A {boolean equals(other) {println "equals called"true}}new A() == new A()
返回
equals called

(2) 如果实现了Comparable接口,==会被映射到该类的compareTo()方法。

class A implements Comparable {boolean equals(other) {println "equals called"true}int compareTo(other) {println "compareTo called"return 1}}new A() == new A()
返回
compareTo called

3、可选形参

Groovy中方法和构造器的形参是可选的。
(1) 设置默认参数。
def percent(x, max=100.0) {x/max*100 + "%"}println percent(23) // 23.00%println percent(47, 100) // 47.00%println percent(31, 1000) // 3.100%
(2) 使用数组实现可变长度的参数。
def log(msg, String[] details) {    println "$msg - ${details}"}log "msg" // msg - []log "msg", "detail1" // msg - [detail1]log "msg", "detail1", "detail2" // msg - [detail1, detail2]
(3) 使用省略号(...)来传递可变长度的参数。
def log(msg, String... details) {    println "$msg - ${details}"}log "msg" // msg - []log "msg", "detail1" // msg - [detail1]log "msg", "detail1", "detail2" // msg - [detail1, detail2]log "msg", ["detail1", "detail2"] as String[] // msg - [detail1, detail2]

4、安全导航操作符

安全导航操作符(?.)可以检查引用是否为空
def upperCase(str) {    str?.toUpperCase()}println upperCase("hello world!") // HELLO WORLD!println upperCase(null) // null
如果不使用(?.),会返回NullPointerException异常。

5、文件File

Groovy中是File类来处理文件,大大简化了操作。
new File(fileName).text // 直接得到文件内容
如果想要逐行处理,调用eachLine、filterLine等方法。
new File(fileName).eachLine {println it}println new File(fileName).filterLine {it =~ /File/}
File还提供了很多withXX方法来处理文件的输入输出。
0 0
原创粉丝点击