swift - 方法中使用的协议(protocol)静态变量

标签 swift methods static protocols swift-protocols

我有这个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/

相关文章:

ios - 如何在 Swift 中使用约束为 UIView 设置动画?

c - 具有静态 const 成员的动态分配数组

c# - 更改 web.config 会导致 IIS 网站刷新,是否还会再次触发运行静态构造函数?

java - 静态-非静态交互

ios - 如何快速避免 AFNetworking 导致的内存泄漏

swift - 为什么我不能使用 Swift 4 加载 Collada 文件?

swift - 通过 HTTP 发送 `NSManagedObjects`

twitter-bootstrap - 动态重新初始化或销毁 Bootstrap 日期选择器

Java : Instantiating method variables

python - 如何在子类中调用父类?