Groovy

2016-03-29 10 views
0

yazılan bir BigDecimal bağımsız değişkenine bir def değişken geçirerek Groovy için yeni yaşıyorum, bu yüzden çalışma zamanı bağlama, yazılan ve yazılan özellikler değil, biraz karışık. Şahsen ilan edilecek türleri tercih ederim. Bununla birlikte, bir sorum var.Groovy

Numaraları bildiğim haritalar, girişler, her neyse, bazı değişkenler alan küçük bir yöntem var. Diyelim ki ilk tipin ne olduğunu bilmiyorum (kodun derinliklerinde bir yer veya harici bir kaynaktan geliyor), diğer bir sayıydı. Şimdi bu argümanlardan ikisini alan bir metodum var ve bunların üzerinde bir modulo işlemi yapmak zorundayım. Ondalık veya ondalık olmaları nedeniyle, BigDecimal'in kalanını kullanarak, yöntem imzasında BigDecimal türünü kullandığım türü zorlamak için küçük bir yöntem yazdım.

def callerMethod(Map map) { 
    ... 
    map.each{ 
     calledMethod(it.val1, it.val2) 
     ... 
    } 
    ... 
} 

def calledMethod(BigDecimal val1, BigDecimal val2) { 
    ... 
    vl1.remainder(val2) 
    ... 
} 

Bu doğru mu? Gelen argüman Tamsayı ise (çoğu zaman doğru bir şekilde anladığım takdirde ilkellerin kutulu olduğu durumlarda), bu bir örtük olarak veya bir BigDecimal'e dönüştürülecek mi?

Bu, Groovy'de nasıl çalışır.

Hala türleri kullanabilme seçeneğim olduğundan, bunları her şeyi tanımlamak yerine kullanmak istiyorum. Aynı zamanda, daha kolay kod okumak veya bu yöntemlerde kodu

+1

Her şeyi "def" olarak bildirme ... Türleri bilirseniz, özellikle genel arabirimlerinizi bildirirseniz, –

+0

map.each {calledMethod (it.val1, it.val2)} duygusu. Sorunuza, girişinizin bir örneğini (Harita?) Ve çıktının nasıl görüneceğine dair bir örnek ekleyebilir misiniz? – pczeus

cevap

0

sorunu zaten okuma mevcut ise değişkenlerin türü değildir şeydir ne olduğunu görmek için yapar gelenekselleşmiş bir Haritada haritanızın

her bir her birinin iki imzası var. bir parametrenin bir Map.Entry almak ve diğer anahtarı ve değeri

Örn .:

Map map = [key1:'value1',key2:'value2'] 
map.each{ Map.Entry entryMap -> 
    println "The value of key: ${entryMap.key} is ${entryMap.value}" 
} 

bu sonucu, her olacaktır almak:

The value of key: key1 is value1 
The value of key: key2 is value2 

da bu

gibi olabilir

Ve bu saniyenin sonucu ilki ile aynı olacaktır.

size calledMethod iki spesifik argümanları geçmek istiyorsanız, böyle her iki dışında pass:

def callerMethod(Map map) { 
    calledMethod(map.val1, map.val2) 
} 

Gayet .. ben en yapmanız için yardımcı umuyoruz istediğini anlamıyorum sen kod