是否有可能在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参数,你获得的价值不再是自己的通用。