그루비 골프를위한 팁


14

관심있는 언어로 골프 팁을 묻는 많은 질문을 보았을 때, 내가 가장 좋아하는 언어 인 Groovy를 요청하기로 결정했습니다. 사람들은 Groovy와의 골프에 사용될 몇 가지 팁과 트릭을 줄 수 있습니다.


1
글쎄, 이것은별로 인기가 없습니다 :-(
Armand

@Alison :이 사이트에 Groovy를위한 골프 팁이 없기 때문에 기분이 나쁘다 :(
Ant 's

2
우리를 시작할 수있는 팁이 있습니까?
Armand

답변:


5

나는이 전체 골프에 익숙하지 않다. 이것이 내가 지금까지 얻은 것이다 :

폐쇄 기능 사용 안함 :

데프 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()

listish 뭔가 경우 *.X확산 운영자 종종 같이 쓸 수있다.X
cfrick

3

Groovy는 다소 장황한 언어이므로 Groovys MOP를 사용하여 메소드 호출을 단축 할 수 있습니다.

예를 들어 다음 스 니펫은 네 번째 사용법 후에 지불합니다.

''.metaClass.r<<{i->(int)Math.random()*i}
''.r(12)

팁 골프 편집 :

0.metaClass.r<<{i->(int)Math.random()*i}
0.r(12)

또는 다음을 알고 있습니다.

r={(int)Math.random()*it}
r(12)

2

grep 짧고 몇 가지 문제에서 작동합니다.

공백이 있고 선행 요소가없는 목록으로 문자열의 문자를 가져 'ABC XYZ'.grep()옵니다.[A, B, C, , X, Y, Z]

regexp가있는 grep이 필요한 경우 대문자로 변환하는 것보다 짧습니다. it.grep(~/(?i)$c/)대신it.toUpperCase().grep(c)


1
'ABC XYZ'as Set한 문자가 짧고 대부분의 같은 장소에서 작동합니다.
Marty Neal

2

객체 목록에서 배열 얻기

다음과 같은 객체 목록이있는 경우 :

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'))

1
이 질문에 Grails 골프 팁이 적용됩니까? 나는 저격수 저격수를 두려워
Victor F

2
두려워하지 마십시오, PCG는 :) 매우 좋은 사람들로 가득하다
베타 붕괴
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.