作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
作为一项学习练习,我正在尝试编写一个小型函数库。我的库中的许多函数都需要传入函数。我想为该函数“键入别名”,以便我的库的用户必须传入具有特定签名的函数。
我已经试过了:
typealias Callback = Result<AnyObject> -> ()
这种作品,但我想要 AnyObject
部分是任何。不具体 AnyObject
,因为那实际上是某种真实类型(?)。我的Result
枚举我基于这个 article关于 Swift 中的错误处理。这是一个通用枚举,所以这就是我想在我的函数签名中反射(reflect)的内容。
如果我删除 <AnyObject>
部分我收到一条错误消息:
Reference to generic type 'Result' requires arguments in <...>
如果我只是为了 Result<T>
我收到错误:
Use of undeclared type 'T'
据我所知,不可能对泛型进行类型别名。那么.. 有什么办法吗?
TLDR;
我有一堆函数,我想将特定签名的函数作为参数,在我的例子中:
(result: Result<T>) -> ()
我如何强制执行此操作?
最佳答案
Swift 4.1 支持泛型类型别名。您可以使用此功能为具有通用参数的函数提供名称。
您可能必须使用这样的声明:
typealias Callback<T> = (Result<T>) -> ()
关于function - typealias 泛型函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25963945/
我是一名优秀的程序员,十分优秀!