ios - 如何在协议(protocol)中声明泛型函数

标签 ios swift function protocols generic-programming

这是我的代码

protocol sharedFunction {

      func transformDictionary<Element>(postDictionary:[Element:Element], key: Element) -> Element


}


class newUser: sharedFunction {

var email:String?
var username:String?
var uid: String?

func transformDictionary(postDictionary: [String : Any], key: String) -> newUser {

 }
}

但我不断收到此错误“Type newUser”不符合协议(protocol)““sharedFunction”

最佳答案

错误的发生仅仅是因为您的类型不符合消息明确指出的协议(protocol)。我会像这样重写你的代码:

protocol SharedFunction {
    associatedtype Element: Hashable
    func transformDictionary(postDictionary: [Element:Element], key: Element) -> Element
}

class NewUser: SharedFunction {

    typealias Element = Int

    var email: String?
    var username: String?
    var uid: String?

    func transformDictionary(postDictionary: [Element : Element], key: Element) -> Element {
        return 1
    }

}

我不知道这段代码的上下文是什么,所以我不知道我的代码对你是否有意义,但我想你明白了。

关于ios - 如何在协议(protocol)中声明泛型函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44836788/

相关文章:

ios - 未保留 ivars 的单元测试

swift - 验证减去 UIn8 Swift

ios - 如何在没有 reloadData 的情况下使用 insertRowsAtIndexPaths IOS

ios - 当 App 从后台收到推送通知或在 iOS 中终止时,无法收听来自 NSNotificationCenter 的通知

ios - 当有一个大标题导航栏时,将 TextView 对齐到顶部

iphone - Apple Watch 与 iPhone 的连接状态

c - 如何在用作 tcp 服务器的线程中使用带有函数参数的函数

c - 在 C 语言中——如何定义以指针作为参数的函数?

r - 在 R 函数名称周围添加引号的原因是什么?

ios - UICollectionViewCell 带有约束的动画