Answers:
我是整个高尔夫运动的新手,这是我到目前为止得到的:
使用闭包不起作用:
def a(b){打印b}
超过
a = {打印}
您可以在数组和列表中使用负索引作为size()的别名-
c =“ abc” d = [“ a”,“ b”,“ c”] 断言c [c.size()-1] == c [-1] 断言c [c.size()-2] == c [-2] 断言d [d.size()-1] == d [-1] 断言d.last()== d [-1]
点差运算符是收集的快捷方式:
断言d * .size()== d.collect {it.size()}
要进行分类,请使用飞船运算符:
e = [54,5,12]
assert e.sort{a,b->a<=>b}==e.sort{a,b->a<b?-1:+1}
assert e.sort{a,b->a<=>b}==e.sort{a,b->if (a>b) {return(-1)} else {return(+1)}}
编辑转换:
assert "123" as int == "123".toInteger()
*.X
差算子通常可以写成.X
grep
很短,可以解决几个问题以带空格且不带前导元素的列表形式获取字符串的字符:'ABC XYZ'.grep()
返回[A, B, C, , X, Y, Z]
的grep与正则表达式是比转换为大写,如果需要的话shorther:it.grep(~/(?i)$c/)
代替it.toUpperCase().grep(c)
'ABC XYZ'as Set
是一个短字符,并且在大多数相同的地方都可以使用
从对象列表中获取数组
如果您有以下对象列表:
def users = [[user:'A',id:1],[user:'B',id:2],[user:'C',id:3]]
您可以使用以下方法生成具有特定属性的ArrayList:
def userIds = users*.id // [1, 2, 3] no explicit loops!
奖金:Groovy ...在Rails上!
好吧,在Grails框架中,我们必须从具有multiple属性的select中获得许多值。您可以使用循环,展平和其他编程更典型的结构,但可以节省一些行。如果您有类似的选择:
<select id="users" multiple="true" name="users">
<option value="193">User A</option>
<option value="378">User B</option>
<option value="377">User C</option>
</select><%-- No Grails tags for now --%>
然后,在您的控制器中,您可以简单地编写:
def aListOfUsers = User.getAll(params.list('userIds'))