2013-02-19 13 views
6

मैं वास्तव में शांत है कि एक कर सकते हैं पाया:ग्रूवी: नाम पैरामीटर कंस्ट्रक्टर्स

class Foo { 
    String name 
} 

def foo = new Foo(name:"Test") 

लेकिन, यह केवल काम करता है जब मेरी फ़ाइल नाम वर्ग के नाम से मेल खाता है। अगर मैं वर्गों के एक समूह के साथ एक फ़ाइल की तरह:

class AllClassesInOneFile { 
    class Bar {} 
    class Foo { 
     String name 
    } 
} 

def foo = new Foo(name:"Test") 

अब, यह काम नहीं करता है अब और मैं एक java.lang.IllegalArgumentException मिलती है: तर्कों की गलत संख्या

मुझे आश्चर्य है कि अगर यह अभी भी संभव है स्क्रिप्ट और नेस्टेड कक्षाओं के साथ नामित पैरामीटर तर्क शैली का आह्वान करने के लिए।

सादर

उत्तर

6

लगता ग्रूवी तरह बाहरी वर्ग का एक उदाहरण के लिए स्पष्ट संदर्भ की जरूरत है:

class Baz { 
    class Bar {} 
    class Foo { 
     String name 
    } 
} 

def baz = new Baz() 

def f = new Baz.Foo(baz, [name: "john doe"]) 

assert f.name == "john doe" 
+0

यह सही है, और यह थोड़े बेकार है :(मुझे यकीन है कि ग्रूवी डेवलपर्स की एक टन है हूँ। इसके कारण। लेकिन मुझे पता चला कि न केवल नामित पैरामीटर काम नहीं करते हैं। कोई भी कन्स्ट्रक्टर काम नहीं करेगा। मदद के लिए धन्यवाद। –

+9

@FuriousBob यदि आप अपने नेस्टेड क्लास को स्थिर बनाते हैं तो आप उन्हें उदाहरण बनाये बिना बनाना चाहते हैं बाहरी वर्ग का। –

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