Bulunursa, parantez içinde bulunan değeri döndüren veya boş bir değer döndüren bir arama listesine sahip olmak istiyorum. Enum kullanmak istemiyorum.Groovy öğenin eşleşme değerini döndürür ve eğer boş bulunursa parantezle geri dön
Bunun gibi:
def grt = { ['mail': 'Scanned Paper', 'digital': 'Digital Things', 'barcode': 'Some Barcode Matter'].get(it) }
def s = grt('digital') ? "($grt('digital')" : ''
println "Report $s"
Ama (it) get'in ucunda toplamak çeşit olduğunu o yüzden daha basit yapmak ve 'def s' hattını ortadan kaldırmak istiyoruz ve tüm açık Tek çizgi. Bir elvis yapabilirsiniz ancak
Hatta gibi meta programlama yapabilirsiniz) (koymuyor:
Object.metaClass.prettyString = { delegate ? "($delegate)" : '' }
ve sonra sadece yapmak zorunda
println "Report $grt('digital').prettyString()"
olmalı
bir tür, ancak bu çalışmaz. get
çağrılırken
def grt = {
[
'mail': 'Scanned Paper',
'digital': 'Digital Things',
'barcode': 'Some Barcode Matter'
][it].with {
delegate ? "($delegate)" : ''
}
}
println "Report ${grt('digital')}"
Kusursuz, aradığım şey budur. 'Ile' yöntemi tam olarak cevaptır. Btw Ben aslında [it] kullandı ama başkaları tarafından daha okunabilir olduğu gibi .get (o) olarak değiştirildi. –