ग्रूवी में गोल्फ के लिए युक्तियाँ


14

जैसा कि मैंने कई सवालों को उनकी रुचि वाली भाषा में गोल्फ के लिए सुझाव मांगते देखा है, मैंने अपनी पसंदीदा भाषा: ग्रूवी के लिए पूछने का फैसला किया। लोग कुछ टिप्स और ट्रिक्स दे सकते हैं जिनका इस्तेमाल ग्रूवी के साथ गोल्फ में किया जाएगा।


1
वैसे यह बहुत लोकप्रिय नहीं है, क्या यह है :-(
आर्मंड

@ एलिसन: मुझे बुरा लगता है, क्योंकि इस साइट में ग्रूवी के लिए कोई गोल्फ टिप नहीं है :(
Ant's

2
क्या आपके पास हमें शुरू करने के लिए कोई सुझाव है?
आर्मंड

जवाबों:


5

मैं इस पूरी गोल्फ चीज़ के लिए नया हूँ, यह वही है जो मुझे अब तक मिला है:

कार्यों का उपयोग न करें:

डी (बी) {प्रिंट बी} को हराया

से लंबा है

a = {प्रिंट करें}

आप सरणियों और सूचियों में ऋणात्मक सूचकांक का उपयोग आकार के लिए उपनाम के रूप में कर सकते हैं () -

सी = "एबीसी"
d = ["a", "b", "c"]

assert c [c.size () - 1] == c [-1]
assert c [c.size () - 2] == c [-2]
assert d [d.size () - 1] == d [-1]
assert d.last () == d [-1]

प्रसार ऑपरेटर संग्रह के लिए एक शॉर्टकट है:

assert d *। आकार () == 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

जैसा कि ग्रूवी कुछ हद तक वाचाल भाषा है, आप ग्रूव्स एमओपी को विधि कॉल को छोटा करने के लिए उपयोग कर सकते हैं।

उदाहरण के लिए निम्नलिखित स्निपेट चौथे उपयोग के बाद बंद हो जाएगा:

''.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 ऊपरी मामले में बदलने की तुलना में shorther है, यदि आवश्यक हो: it.grep(~/(?i)$c/)इसके बजायit.toUpperCase().grep(c)


1
'ABC XYZ'as Setएक पात्र छोटा होता है और एक ही स्थान पर काम करता है
मार्टी नील

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!

बोनस: ग्रूवी ... रेल पर!

ठीक है, ग्रिल्स फ्रेमवर्क में हमें कई विशेषताओं के साथ चयन से कई मान प्राप्त करने होंगे । आप छोरों, समतल और अन्य प्रोग्रामिंग का उपयोग कर सकते हैं अधिक विशिष्ट संरचनाएं, लेकिन आप कुछ पंक्तियों को बचा सकते हैं। यदि आपके पास एक चयन है:

<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
क्या यह सवाल ग्रिल्स गोल्फिंग टिप्स को स्वीकार करेगा? मुझे लगता है मैं नीचे स्नाइपर्स से डरता हूं ...
विक्टर एफ

2
डरो मत, पीसीजी बेहद अच्छे लोगों से भरा है :)
बीटा डेके
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.