2015-10-28 50 views
0

我有一個方法如下:常規呼籲可選參數

void display(def a = null, def b = null) { 

// user provides either value for a, or b 
// if he gives value for a, it will be used 
// if he gives value for b, it will be used 

// not supposed to provide values for both a and b 

} 

我的問題是,如何在用戶應該提供B值?

如果我使用

display(b = 20) 

它指定20 a,我不想要的。

完成此操作的唯一方法是按如下方式調用?

display(null, 20) 
+0

[使用可選參數Groovy的方法](的可能的複製http://stackoverflow.com/questions/18149102/groovy-method-with -optional-parameters) –

回答

0

有了可選參數,是的,您必須致電display(null, 20)。但是您也可以定義方法來接受Map

void display(Map params) { 
    if(params.a && params.b) throw new Exception("A helpful message goes here.") 

    if(params.a) { // use a } 
    else if(params.b) { // use b } 
} 

然後,該方法可以被稱爲是這樣的:

display(a: 'some value') 
display(b: 'some other value') 
display(a: 'some value', b: 'some other value') // This one throws an exception. 
+0

這就是我一直在尋找的!對我在項目中遇到的實際問題非常有意義!謝謝@Emmanuel Rosa! – akshayKhot