作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在 Objective-C 中,我们可以有不同的初始化器来做不同的事情并且不带参数。
- (instancetype) initForSomethingSpecific;
- (instancetype) initWithDefaultSettings;
所以你可以称他们为
[[MyClass alloc] initForSomethingSpecific];
[[MyClass alloc] initWithDefaultSettings];
这些类型的初始化器在 Swift 中被翻译成
init(forSomethingSpecific: ())
init(defaultSettings: ())
所以他们可以被称为
MyClass(forSomethingSpecific: ())
MyClass(defaultSettings: ())
但这看起来不是很敏捷。
在仅 Swift 的环境中是否有正确的方法来执行此操作?工厂方法是首选吗?
谢谢。
最佳答案
事实上,似乎没有办法用 swift 做到这一点。
我个人的理解/意见是 Swift 中的 init 方法的目的是创建一个具有默认特征的对象,或者使用在初始化程序中传递给它的信息。如果您在初始化程序中为某些特定配置实例化一个对象,那实际上是一个放置在初始化程序中的工厂,而不是一个真正的初始化程序本身。
关于swift - 如何在 Swift 中创建多个不带参数的不同初始化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36413729/
我是一名优秀的程序员,十分优秀!