답변:
나는이 전체 골프에 익숙하지 않다. 이것이 내가 지금까지 얻은 것이다 :
폐쇄 기능 사용 안함 :
데프 a (b) {print 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]
스프레드 연산자는 수집에 대한 바로 가기입니다.
assert 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]
regexp가있는 grep이 필요한 경우 대문자로 변환하는 것보다 짧습니다. 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!
보너스 : 그루비 ... 레일즈에!
음,에 Grails의 프레임 워크 우리는 많은 값을 받아야합니다 여러 속성을 선택합니다 . 루프, 평탄화 및 기타 프로그래밍보다 일반적인 구조를 사용할 수 있지만 일부 줄을 저장할 수 있습니다. 다음과 같은 선택이있는 경우 :
<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'))