在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
}
}
但是我想知道是否有更好的方法来做到这一点?
答案 0 :(得分:0)
在Swift 5.1中,此代码不再产生错误。
class Foo {
class func someValue() -> Int {
return 1337
}
func printValue() {
print(Foo.someValue())
print(type(of: self).someValue())
print(Self.someValue()) // ok
}
}