我想更清楚地瞭解我的關於他們的參數類型的閉包。所以,我喜歡寫東西Groovy中輸入參數的關閉
List<Y> myCollect(List<X> list, Closure<X,Y> clos) { ... }
我知道,Groovy中不會使用該類型的信息,但Groovy的++可以在編譯時使用它。這可以實現(除了將其納入評論)?
更新: 標題可能聽起來有誤導性,但我認爲上面的例子會使它更清晰。我有興趣指定一個閉包的類型,它是一些函數的參數。假設,我想重新定義內置的collect
。所以我有興趣寫myCollect
,而不是寫在clos
。我想實現的是編譯時錯誤
myCollect(['a', 'ab'], { it/2 }) // compile error
myCollect(['a', 'ab'], { it.size() }) // OK
在類型Closure中,V表示閉包的返回值,而不是其參數。因此,由於無法返回兩個值,因此設置Closure 是沒有意義的。 –
2013-07-26 01:16:09
我的意思是'Closure'接受一個'X'作爲輸入並返回'Y'。所以它可以應用於'List '的項目。我更新了函數的返回類型。 –
2013-07-26 08:57:44