เคล็ดลับสำหรับการเล่นกอล์ฟใน Groovy


14

เมื่อฉันได้เห็นคำถามมากมายที่ถามเคล็ดลับสำหรับการเล่นกอล์ฟในภาษาที่สนใจของพวกเขาฉันตัดสินใจที่จะถามภาษาที่ฉันชอบ: Groovy ผู้คนสามารถให้คำแนะนำและลูกเล่นที่จะใช้ในการเล่นกอล์ฟกับ Groovy


1
อย่างนี้มันไม่ได้รับความนิยมมากใช่มั้ย :-(
Armand

@Alison: ฉันรู้สึกแย่เนื่องจากไม่มีเคล็ดลับกอล์ฟสำหรับ Groovy ในเว็บไซต์นี้ :(
Ant's

2
คุณมีเคล็ดลับใด ๆ ในการเริ่มต้นเรา
อาร์มันด์

คำตอบ:


5

ฉันใหม่สำหรับสิ่งที่เล่นกอล์ฟทั้งหมดนี่คือสิ่งที่ฉันได้รับ:

ใช้ฟังก์ชั่นไม่ปิด:

def a (b) {print b}

นานกว่า

a = {พิมพ์มัน}

คุณสามารถใช้ดัชนีเชิงลบในอาร์เรย์และรายการเป็นชื่อแทนขนาด () -

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
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 สั้นและใช้งานได้กับปัญหาหลายอย่าง

รับ chars ของสตริงเป็นรายการที่มีช่องว่างและไม่มีองค์ประกอบนำหน้า: 'ABC XYZ'.grep()return[A, B, C, , X, Y, Z]

grep ที่มี regexp สั้นกว่าการแปลงเป็นตัวพิมพ์ใหญ่หากต้องการ: 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!

โบนัส: Groovy ... บนราง!

ทั้งใน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 หรือไม่? ผมสารภาพฉันกลัวซุ่ม downvote ...
วิคเตอร์ F

2
อย่ากลัว PCG เต็มไปด้วยผู้คนที่แสนดี :)
Beta Decay
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.