我有这个swift代码:
protocol Table {
static var tableName: String { get }
}
class User: Table {
internal static var tableName = "user"
}
我知道想用 Table
协议(protocol)参数构造方法。
像这样的东西:
func doSomethingFrom(table: Table) {
print(table.tableName)
}
doSomethingFrom(table: User) // prints "user"
有没有办法简单地实现这一目标?
最佳答案
这就是您正在寻找的语法。您需要通过附加 .self
来传递类型本身。这是为了防止错误(因为直接谈论类型的情况很少见,但很容易发生意外)。并且您需要采用类型本身的参数而不是该类型的实例。
func doSomethingFrom(table: Table.Type) {
print(table.tableName)
}
doSomethingFrom(table: User.self) // prints "user"
关于swift - 方法中使用的协议(protocol)静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39756799/