【发布时间】:2018-09-19 15:32:07
【问题描述】:
是否可以在 Swift 中调用static(或class)方法/属性而不编写类名(来自实例方法)?
class Foo {
class func someValue() -> Int {
return 1337
}
func printValue() {
print(Foo.someValue())
print(type(of: self).someValue())
print(Self.someValue()) // error: use of unresolved identifier 'Self'
}
}
到目前为止,我已经找到了一种使用协议/类型别名的解决方法:
protocol _Static {
typealias Static = Self
}
class Foo: _Static {
class func someValue() -> Int {
return 1337
}
func printValue() {
print(Static.someValue()) // 1337
}
}
但我想知道是否有更好的方法来做到这一点?
【问题讨论】:
-
希望universal
Self能尽快实施(建议太老了,使用.dynamicType而不是type(of:))... -
@Hamish 谢谢。显然这个问题的优先级很低,因为它与 ABI 无关......
标签: swift