是否有可能在Swift中创build一个通用的闭包?

func myfunc<T>(i:T) -> T { return i } 

是否有可能使这个通用函数闭包?

 let myfunc = { <T>(i:T) -> T in return i } 

这不起作用…

不,因为variables和expression式不能是通用的。 只有通用函数和通用types。


澄清:在某些语言中,可以使用通用量词types,如forall a. a -> a forall a. a -> a 。 但在Swift中,types不能有一个通用的量词。 所以expression式和值不能是通用的。 函数声明和types声明可以是通用的,但是当你使用这样的通用函数或者这样一个genericstypes的实例时,select某种types(可能是一个真实types或typesvariables)作为types参数,你获得的价值不再是自己的通用。