在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
}
}
但我想知道是否有更好的方法可以做到这一点?
最佳答案
使用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
}
}
关于swift - 调用静态方法而不重复类名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52409456/