ios – Swift对象初始化(类工厂方法,默认初始化,方便初始化)

ios – Swift对象初始化(类工厂方法,默认初始化,方便初始化),第1张

概述嗨,我想弄清楚在 Swift中使用对象的最佳模式. 我认为我使用初始化器,方便和默认都是正确的…但是类工厂方法会发生什么? 我试图创建一个简单的类Person和子类Student,只有很少的属性和方法.这是最正确的方法吗? class Person{ var _name: String var _surname: String var _dateOfBirthday: S 嗨,我想弄清楚在 Swift中使用对象的最佳模式.

我认为我使用初始化器,方便和默认都是正确的…但是类工厂方法会发生什么?

我试图创建一个简单的类Person和子类Student,只有很少的属性和方法.这是最正确的方法吗?

class Person{    var _name: String    var _surname: String    var _dateOfBirthday: String    var _phoneNumb: [String]    init(name:String,surname:String,dateOfBirthday:String,phone:[String]){        self._name = name        self._surname = surname        self._dateOfBirthday = dateOfBirthday        self._phoneNumb = phone    }    convenIEnce init() {        self.init(name:"",surname:"",dateOfBirthday:"",phone:[])    }    convenIEnce init(name:String){        self.init(name:name,phone:[])    }}class Student:Person{    var _studentID:Int    init(name: String,surname: String,dateOfBirthday: String,phone: [String],ID:Int) {        self._studentID = ID        super.init(name: "",surname: "",dateOfBirthday: "",phone: [])    }    convenIEnce init(){        self.init(name: "",phone: [],ID:0)    }    convenIEnce init(name:String){        self.init(name:name,phone:[],ID:0)    }}

如果我想添加一个类工厂方法怎么办?会是这样的事情还是我做错了?

class func Person() -> Person { var x = Person() x._telephoneNumber = [String]() // is this needed? or i can initialize it later? return x}class func PersonWithname(name:String) -> Person { var x = Person(name:name,telephoneNumber:[]) return x}

它是否正确?为什么使用init而不是类工厂会更好?

解决方法

is this correct? why would it be better to use the init instead of the class factory?

如果可以使用init,为什么要创建“类工厂”? init是用于创建类的新对象的惯用Swift方法.

在大多数情况下,当您想要为类的主(指定)初始化程序添加快捷方式时,添加便利初始化程序是正确的选择.但是,在您的情况下,它们完全没必要,因为Swift支持默认参数值.

只需像这样定义你的初始值设定项:

init(name:String = "",surname:String = "",dateOfBirthday:String = "",phone:[String] = []) { ... }

这样,您可以将其作为Person()或Person(名称:“Andrew”)或任何其他参数组合调用.

编辑:

作为旁注,使用下划线为实例变量添加前缀通常似乎不是惯用的Swift.可以省略下划线并使用self.消除本地和实例变量之间的歧义:

self.name = nameself.surname = surnameself.dateOfBirthday = dateOfBirthdayself.phoneNumb = phone
总结

以上是内存溢出为你收集整理的ios – Swift对象初始化(类工厂方法,默认初始化,方便初始化)全部内容,希望文章能够帮你解决ios – Swift对象初始化(类工厂方法,默认初始化,方便初始化)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1008981.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存