2012-09-25 15 views
23

के साथ groovy प्रकार मैं सिर्फ अपने पैरों को gremlin के साथ गीला कर रहा हूँ। मैं समझता हूं कि gremlin groovy पर आधारित है। मुझे प्रलेखन here मिला, लेकिन मुझे अभी भी यकीन नहीं है कि वाक्यविन्यास का क्या अर्थ है।तुलनात्मक वाक्यविन्यास

मैं कैसे एक तुलनित्र के साथ एक तरह से वाक्य रचना में काम करता है के रूप में एक सा उलझन में हूँ:

m.sort{a,b -> a.value <=> b.value} 

कोई समझा सकते हैं { और } के बीच सभी विभिन्न बिट्स क्या मतलब है?

उत्तर

40

sort द्वारा उपयोग किए गए दो पैरामीटर हैं, यह पारंपरिक Comparator की तरह कार्य करता है। अर्थात्, प्रत्येक तुलना के दौरान किया गया प्रत्येक तुलना के लिए, a और b के बीच, नकारात्मक पूर्णांक, शून्य, या सकारात्मक पूर्णांक देता है क्योंकि पहला तर्क दूसरे से कम, बराबर या उससे अधिक है ।

अपने विशेष परिदृश्य में, तुलना spaceship operator<=> का उपयोग करने का परिणाम है। दूसरे शब्दों में, आप प्रभावी रूप से क्रम में अपने तत्वों को क्रमबद्ध कर रहे हैं।

उदाहरण के लिए, यदि आपके पास [ 3, 2, 1 ] सूची है, तो would be[ 1, 2, 3 ] का उपयोग करने का नतीजा।

int compare(a, b) { 
    if (a < b) { 
    return -1; 
    } else if (a > b) { 
    return 1; 
    } else { 
    return 0; 
    } 
} 
+0

तो, 'ए, बी ऑपरेटर के बारे में अधिक ->', बस मान 'A' और तुलनित्र के लिए' b' गुजरता है? – F21

+0

@ एफ 21: हाँ, तरह। यह एक ऐसे फ़ंक्शन की तरह है जो दो पैरामीटर लेता है और फ़ंक्शन बॉडी के अनुसार सॉर्ट करने के लिए उपयोग किया जाता है जो स्पेसशिप ऑपरेटर देता है। –

+0

ग्रेट स्पष्टीकरण! चीयर्स :) – F21

4

अंतरिक्ष यान ऑपरेटर <=> एक ओवरलोड ऑपरेटर है और compareTo() प्रतिनिधित्व करता है:

इस प्रकार, m.sort{a,b -> a.value <=> b.value}मोटे तौर पर निम्नलिखित compare समारोह का उपयोग करने के बराबर है। मूल रूप से a<=>ba.compareTo(b)

जैसा उदाहरण आपने दिया है वह उदाहरण sort() फ़ंक्शन को बंद करने के साथ (जावा 8 में लैम्ब्डा) का उपयोग कर रहा है। इसके लिए वाक्य रचना है निम्नलिखित:

.method {closureParameters ->statements}

तो अपने उदाहरण एक closure साथ sort() समारोह उपयोग कर रहा है, कि बंद आप अंतरिक्ष यान (तुलनित्र) का उपयोग अंदर ऑपरेटर

अधिक भार here

संबंधित मुद्दे