Lời khuyên cho việc chơi gôn ở Groovy


14

Vì tôi đã thấy nhiều câu hỏi hỏi mẹo chơi golf bằng ngôn ngữ quan tâm của họ, tôi quyết định hỏi ngôn ngữ yêu thích của mình: Groovy. Mọi người có thể đưa ra một số mẹo và thủ thuật sẽ được sử dụng khi chơi golf với Groovy.


1
Chà, điều này không phổ biến lắm, phải không :-(
Armand

@ Alison: Tôi cảm thấy tồi tệ, vì không có mẹo chơi gôn cho Groovy trong trang web này :(
Ant's

2
Bạn có bất cứ lời khuyên để bắt đầu chúng tôi?
Armand

Câu trả lời:


5

Tôi là người mới đối với toàn bộ môn đánh gôn này, đây là những gì tôi có được cho đến nay:

Sử dụng Đóng không phải chức năng:

def a (b) {in b}

dài hơn

a = {in nó}

Bạn có thể sử dụng chỉ mục phủ định trong mảng và liệt kê dưới dạng bí danh cho kích thước () -

c = "abc"
d = ["a", "b", "c"]

khẳng định c [c.size () - 1] == c [-1]
khẳng định c [c.size () - 2] == c [-2]
khẳng định d [d.size () - 1] == d [-1]
khẳng định d.last () == d [-1]

Toán tử lây lan là một phím tắt để thu thập:

khẳng định d * .size () == d.collect {it.size ()}

Để sắp xếp sử dụng toán tử tàu vũ trụ:

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

Chỉnh sửa chuyển đổi:

assert "123" as int == "123".toInteger()

nếu trên một cái gì đó lắng nghe *.Xtoán tử lây lan thường có thể được viết là.X
cfrick

3

Vì Groovy là một ngôn ngữ hơi dài dòng, bạn có thể sử dụng Groovys MOP để rút ngắn các cuộc gọi phương thức.

Ví dụ đoạn mã sau sẽ trả hết sau lần sử dụng thứ tư:

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

Mẹo chỉnh sửa golf:

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

Hoặc, bạn biết:

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

2

grep là ngắn và làm việc trên một số vấn đề

lấy ký tự của chuỗi dưới dạng danh sách có khoảng trắng và không có phần tử đứng đầu: 'ABC XYZ'.grep()trả về[A, B, C, , X, Y, Z]

grep với regapi ngắn hơn chuyển đổi sang chữ hoa, nếu được yêu cầu: it.grep(~/(?i)$c/)thay vìit.toUpperCase().grep(c)


1
'ABC XYZ'as Setlà một nhân vật ngắn hơn và hoạt động ở hầu hết các nơi giống nhau
Marty Neal

2

Lấy một mảng từ danh sách các đối tượng

Nếu bạn có một danh sách các đối tượng như:

def users = [[user:'A',id:1],[user:'B',id:2],[user:'C',id:3]]

Bạn có thể tạo một ArrayList với một thuộc tính nhất định bằng cách sử dụng:

def userIds = users*.id // [1, 2, 3] no explicit loops!

THƯỞNG: Groovy ... trên đường ray!

Chà, trong Grails Framework, chúng ta phải nhận được nhiều giá trị từ một lựa chọn có nhiều thuộc tính . Bạn có thể sử dụng các vòng lặp, làm phẳng và lập trình các cấu trúc điển hình khác, nhưng bạn có thể lưu một số dòng. Nếu bạn có một lựa chọn như:

<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 --%>

Sau đó, trong bộ điều khiển của bạn, bạn có thể viết đơn giản:

def aListOfUsers = User.getAll(params.list('userIds'))

1
Câu hỏi này có chấp nhận lời khuyên chơi gôn của Grails không? Tôi thú nhận rằng tôi sợ những tay súng bắn tỉa downvote ...
Victor F

2
Đừng sợ, PCG có rất nhiều người cực kỳ dễ thương :)
Beta Decay
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.