3
我試圖編寫一個函數,它可以將任何函數作爲參數並在Swift中執行。我曾嘗試這個辦法:如何將任何函數作爲參數傳遞並在Swift中執行?
public func anyFunc<P, T> (_ function: (P...) -> T) {
_ = function()
}
,然後用嘗一嘗:
anyFunc(print("hello"))
這將產生ERROR: 'print' produces '()', not the expected contextual result type '(_...) -> _'
我怎樣才能做到這一點(和是可行的)?
?傳遞的函數是否應該返回void? –
'print(「hello」)'是_a調用函數print',它返回一個結果(空元組'')'。因此,你對'anyFunc'的調用等價於'anyFunc(())',這對於'anyFunc'的參數自然是不匹配的。 – dfri
一般來說,如果需要任意數量的參數,您希望如何在不傳遞任何參數的情況下調用'function()'? – jtbandes