ग्रूवी कुछ बहुत ही अप्रिय "ग्रूवी बीन्स" और संवृति है कि यह कुछ निश्चित परिस्थितियों में स्थानीय चर मुखौटा हो सकता है के साथ जुड़े व्यवहार करने लगता है।स्वत: संपत्ति गेटटर, स्थानीय चर, और बंद के बीच ग्रोवी संघर्ष?
इस नाम से जाना जाता व्यवहार है और वहाँ कुछ प्रलेखन कहीं इस सामग्री का विवरण है?
class TestClass {
def doIt(Closure closure) {
closure.setDelegate(this)
closure.call()
}
def getRevision() {
return "testclass revision"
}
}
def testIt() {
def revision = "testit revision"
println "1: " + revision + " (expect: testit)"
TestClass tester = new TestClass()
tester.doIt {
println "2: " + getRevision() + " (expect: testclass)"
}
println "3: " + revision + " (expect: testit)"
tester.doIt {
println "4: " + revision + " (expect: testit)"
revision = getRevision()
println "5: " + revision + " (expect: testclass)"
println "6: ${getRevision()} (expect: testclass)"
println "7: " + getRevision() + " (expect: testclass)"
}
// expect to have been set to testclass value in previous closure
println "8: " + revision + " (expect: testclass)"
tester.doIt {
println "9: ${getRevision()} (expect: testclass)"
println "10: " + getRevision() + " (expect: testclass)"
}
println "11: " + revision + " (expect: testclass)"
}
testIt()
इस कोड रनिंग निम्नलिखित उत्पादन का उत्पादन: मैं क्या काम कर रहा था पता लगाने की कोशिश में बहुत समय ...
निम्नलिखित कोड पर विचार करें बर्बाद
1: testit revision (expect: testit)
2: testclass revision (expect: testclass)
3: testit revision (expect: testit)
4: testit revision (expect: testit)
5: testit revision (expect: testclass)
6: testit revision (expect: testclass)
7: testit revision (expect: testclass)
8: testit revision (expect: testclass)
9: testclass revision (expect: testclass)
10: testclass revision (expect: testclass)
11: testit revision (expect: testclass)
मेरे मुख्य समस्या 5/6/7 के साथ है। ऐसा लगता है कि बस बंद करने के भीतर स्थानीय revision
चर का उपयोग कर "खाल" प्रतिनिधि में getRevision()
विधि और के साथ यह बदल देता है एक सेम शैली स्वत: जनरेट getRevision()
revision
"संपत्ति" मैच के लिए। अगर मैं revision
चर का उपयोग नहीं करता, तो getRevision()
पर कॉल करें इस बीन व्यवहार को नकारें।
प्रलेखन के लिए किसी भी जानकारी या लिंक की सराहना की होगी!
उत्तर के लिए धन्यवाद। मैंने आपके सुझाव की कोशिश की लेकिन दुर्भाग्य से यह मदद नहीं की। मुझे लगता है कि समस्या यहाँ संकलन समय पर है: दोनों 'revision' और' getRevision का उपयोग कर() 'बंद भीतर ग्रूवी संकलक बनाता है यह' revision' चर, जो तब प्रतिनिधि के संस्करण खाल के लिए एक गेटर उत्पन्न करने के लिए है लगता है। –