gpt4 book ai didi

swift - 调用静态方法,不重复类名

转载 作者:行者123 更新时间:2023-11-30 11:08:47 25 4
gpt4 key购买 nike

在 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)/类型别名的解决方法:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com