在Swift中,假设我想添加一个返回示例的静态工厂方法:
class MyClass {
static func getInstance() {
return MyClass(someProperty);
}
}
但是如果我不想写类名呢?除了静态方法和属性外,是否有self
的等效物?
如果我想从一个静态方法调用另一个静态方法,也是同样的想法:
class MyClass {
static func prepare(){
//Something
}
static func doIt() {
MyClass.prepare();
}
}
我可以在不显式使用MyClass
的情况下做到这一点吗?
4条答案
按热度按时间rsaldnfx1#
self也可以在静态方法中工作,像这样:
svdrlsy42#
正如RobberR上面所写的,你可以只使用
self
来访问self
的静态函数,而self.init(...)
用于工厂示例。请注意,您仍然必须在工厂方法中指定MyClass
作为返回类型。作为另一种更通用的方法,您可以让您的类符合工厂协议,该协议包含工厂方法的默认实现。这样,静态工厂方法就不会绑定到任何特定的类,但是可以被任何符合工厂协议的类访问(以及一个额外的帮助协议)。
出厂设置:
示例类一致性:
示例用法:
ogsagwnx3#
你可以定义一个协议,并像这样使用swift generics:
复制你的代码的人可以这样做:
rqcrx0a64#
你可以创建一个不引用类的工厂方法,像这样: