2013-02-19 7 views
6

Bir yapabileceği çok güzel buldum. Ben sınıfların bir grup ile bir dosya varsa ister:Groovy: my dosya adı sınıf adı eşleştiğinde sadece çalışır,</p> <pre><code>class Foo { String name } def foo = new Foo(name:"Test") </code></pre> <p>Ama: Adlandırılan parametre kurucular

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

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

Şimdi, çalışmıyor artık bir java.lang.IllegalArgumentException olsun: argümanların yanlış numara

acaba hala mümkün olup olmadığını betik ve iç içe geçmiş sınıflarla adlandırılmış parametre argümanı stilini çağırmak. Groovy dış sınıfının bir örneğine açıkça atıfta ihtiyacı olduğu gibi Selamlar

cevap

6

görünüyor:

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

Doğru, bu tür ben harika geliştiriciler bir ton olduğuna eminim :(emer. Bunun nedenleri var, ama sadece adlandırılmış parametrelerin işe yaramadığını öğrendim.Bir kurucu işe yaramaz.Yardım için teşekkürler. –

+9

@FuriousBob Yuvalanmış sınıflarınızı statik yaparsanız, bir örnek oluşturmadan bunları oluşturabilmeniz gerekir. dış sınıfın –

İlgili konular