जैसा कि मैंने कई सवालों को उनकी रुचि वाली भाषा में गोल्फ के लिए सुझाव मांगते देखा है, मैंने अपनी पसंदीदा भाषा: ग्रूवी के लिए पूछने का फैसला किया। लोग कुछ टिप्स और ट्रिक्स दे सकते हैं जिनका इस्तेमाल ग्रूवी के साथ गोल्फ में किया जाएगा।
जैसा कि मैंने कई सवालों को उनकी रुचि वाली भाषा में गोल्फ के लिए सुझाव मांगते देखा है, मैंने अपनी पसंदीदा भाषा: ग्रूवी के लिए पूछने का फैसला किया। लोग कुछ टिप्स और ट्रिक्स दे सकते हैं जिनका इस्तेमाल ग्रूवी के साथ गोल्फ में किया जाएगा।
जवाबों:
मैं इस पूरी गोल्फ चीज़ के लिए नया हूँ, यह वही है जो मुझे अब तक मिला है:
कार्यों का उपयोग न करें:
डी (बी) {प्रिंट बी} को हराया
से लंबा है
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
जैसा कि ग्रूवी कुछ हद तक वाचाल भाषा है, आप ग्रूव्स एमओपी को विधि कॉल को छोटा करने के लिए उपयोग कर सकते हैं।
उदाहरण के लिए निम्नलिखित स्निपेट चौथे उपयोग के बाद बंद हो जाएगा:
''.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)
grep
कम है और कई समस्याओं पर काम करता हैरिक्त स्थान और प्रमुख तत्वों के साथ सूची के रूप में एक स्ट्रिंग के वर्ण प्राप्त करें: 'ABC XYZ'.grep()
रिटर्न[A, B, C, , X, Y, Z]
regexp के साथ grep ऊपरी मामले में बदलने की तुलना में shorther है, यदि आवश्यक हो: 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!
बोनस: ग्रूवी ... रेल पर!
ठीक है, ग्रिल्स फ्रेमवर्क में हमें कई विशेषताओं के साथ चयन से कई मान प्राप्त करने होंगे । आप छोरों, समतल और अन्य प्रोग्रामिंग का उपयोग कर सकते हैं अधिक विशिष्ट संरचनाएं, लेकिन आप कुछ पंक्तियों को बचा सकते हैं। यदि आपके पास एक चयन है:
<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'))