swift - 是否可以将通用函数分配给变量?

标签 swift

func function1(arg: Int) -> Int { return arg }

func function2<T>(arg: T) -> T { return arg }

let f1 = function1 // No problem

let f2 = function2<Int> // Cannot explicitly specialize a generic function

当前语言的不足?

最佳答案

你可以让 Swift 通过 f2 的显式类型注释来推断 function2 的特殊化:

let f2: (Int) -> Int = function2

或者,使用提供显式类型注释的中间专用函数

func specialize1Dmap<T>(_ f: @escaping (T) -> T, as _: T.Type) -> (T) -> T { return f }
let f2int = specialize1Dmap(function2, as: Int.self)
let f2str = specialize1Dmap(function2, as: String.self)

关于swift - 是否可以将通用函数分配给变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40694060/

相关文章:

objective-c - 如何从 swift 将可选值传递给 Objective C 类

swift - 实例化 View Controller 不工作

swift - 如何围绕 Sprite 节点分配 SKPhysicsBody,使其完美环绕对象框架

swift - 如何在 Swift 3 中的两个 View 之间画一条线?

iOS Swift - 如何匹配另一个字符串为 "like"的字符串?即 "http"就像 "http://"

ios - 在从初始化器 swift 返回之前,在所有路径上调用 'Super.init isn' t 时出现问题。

Swift Firebase 身份验证错误识别

ios - 侧面菜单 View 未显示

ios - 在多次打开应用程序后,弹出窗口要求用户对我的应用程序进行评分?

swift - 从 UICollectionView 打印图像名称到控制台