【发布时间】:2014-09-21 21:15:12
【问题描述】:
作为学习练习,我正在尝试编写一个小型函数库。我的库中的许多函数都需要传入一个函数。我想为这个函数“键入别名”,以便我的库的用户必须传入一个具有特定签名的函数。
我试过了:
typealias Callback = Result<AnyObject> -> ()
这种工作,但我希望AnyObject 部分是任何东西。不是专门AnyObject,因为那实际上是某种真正的类型(?)。我的Result 枚举我基于这个article 关于Swift 中的错误处理。这是一个通用枚举,所以这就是我想在我的函数签名中体现的内容。
如果我删除 <AnyObject> 部分,我会收到一条错误消息:
对泛型“结果”的引用需要 <...>
中的参数
如果我只是 Result<T> 我得到错误:
使用未声明的类型'T'
据我所知,不可能对泛型进行 typealias。那么..这附近有吗?
TLDR;
我有一堆函数,我想将特定签名的函数作为参数,在我的例子中:
(result: Result<T>) -> ()
我该如何强制?
【问题讨论】:
-
正如@natecook 所说,这目前是不可能的,但我们在这里也讨论了几乎相同的事情:stackoverflow.com/questions/25909856/…