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
- Groovy特殊语法
- Groovy 特殊语法
- groovy语法
- Groovy基础语法
- Groovy的基础语法
- Groovy基本语法(1)
- Groovy基本语法(2)
- Groovy基本语法(3)
- Groovy常用语法总结
- Groovy常用语法总结
- Groovy的基础语法
- 转载Groovy基本语法
- Groovy常用语法总结
- groovy语法篇介绍
- groovy语法基础
- Groovy 简要语法
- Groovy的基础语法
- groovy语法基础
- c++编写node的addon(3) --向addon传参
- PHPMailer发送邮件
- elasticsearch-操作索引
- 【教程】ios端利用微软RD Client APP远程连接PC(外网)
- Android 关于系统回收的知识整理
- Groovy特殊语法
- 五,iOS在UITableView中使用输入框和验证码按钮的实现
- gatling模拟线上实际压力
- 从你的全世界切过(胡说八道支持向量机SVM小故事)
- 数据结构与算法分析笔记与总结(java实现)--排序5:快速排序练习题
- ZJOI2012一试【旅游】题解--最长链&bfs
- MFC控件--VS2010 组合框控件Combo Box
- Java正则表达式--Matcher.group函数的用法
- 系统架构