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

有可能把这个泛型函数变成闭包吗?

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

这不管用...

推荐答案

不,因为变量和表达式不能是泛型的.只有泛型函数和泛型类型.


澄清一下:在某些语言中,你可以使用带有通用量词的类型,比如forall a. a -> a.但在Swift中,类型不能有通用量词.所以表达式和值本身不能是泛型的.函数声明和类型声明可以是泛型的,但当您使用此类泛型函数或此类泛型类型的实例时,会 Select 某个类型(可以是实类型或类型变量)作为类型参数,然后您获得的值本身就不再是泛型的.

Swift相关问答推荐

Swift concurrency reload/await,支持只执行成功并重试

它是RxSwift中直接用于可扩展视图的有效的可扩展BehaviorRelay值?

为什么ClosedRange<;Int&>包含的速度比预期慢340万倍?

出错-无法将季节类型的值转换为预期的参数类型';[水果]';

(Swift)混淆了函数内 for-in 循环的返回值和循环后(函数内)的返回值)

如何在 Swift 中做类型安全的索引?

子视图未在父视图 SwiftUI 中触发禁用状态更新

Swift Property Wrappers-Initialization 失败并显示无法将‘Double’类型的值转换为预期的参数类型

Swiftui 无法从核心数据中获取数据

从 actor 的 init 方法调用方法

在 Swift 的异步上下文中,如何指示我想要函数的同步版本?

如何在类中打印函数

在 Swift 4 中实现自定义解码器

将if let与逻辑或运算符一起使用

是 swift 中另一个日期的同一周、月、年的日期

使用 phimagemanager 将图像保存到自定义相册?

使用 ARAnchor 插入 node 和直接插入 node 有什么区别?

显示 UIAlertController 的简单 App Delegate 方法(在 Swift 中)

使用 swift IOS 使 UIBarButtonItem 消失

键盘显示时Tableview滚动内容