swift - 我怎样才能调用这个通用函数?

标签 swift generics protocols type-inference

我只是在试图弄清楚 Swift 泛型时想到这个。我想出了以下测试代码,我想在其中调用 f()。在这种情况下,我不知道如何告诉编译器 TClassy

protocol Prot {
    func doSomething()
    static func instance() -> Prot
}

class Classy: Prot {

    func doSomething() {
        print("here")
    }

    static func instance() -> Prot {
        return Classy()
    }
}

func f<T: Prot>() {
    T.instance().doSomething()
}

f() // error
f<Classy>() // error

最佳答案

试试这个:

f<T: Prot>(t: T.Type) {
    t.instance().doSomething()
}

f(Classy.self)

我现在不在可以测试它的地方,但我过去使用过这种技术并且它有效。

关于swift - 我怎样才能调用这个通用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30629882/

相关文章:

swift - 如何在 Swift 中创建一个返回符合协议(protocol)的类型的函数?

c# - 构建通用存储库示例

ios - 如何检测类型对于通用 propertyWrapper 是可选的

javascript - 这个脚本是否遵循通用标准? (Javascript/HTML)

ios - iOS 14 中不会出现分页点

使用此关键字时的 C# 泛型类型

swift - swift 中的平等协议(protocol)

swift - 如何从 swift 数组中删除多个项目?

ios - Swift - 如何配对来自两个独立类的变量?

ios - 函数的语法错误 -- 缺少参数