Class 在Swift中初始化类的首选方法
在学习Swift时,初始化类实例似乎有两种方法:Class 在Swift中初始化类的首选方法,class,swift,initialization,init,Class,Swift,Initialization,Init,在学习Swift时,初始化类实例似乎有两种方法: // Approach A class Person { let first: String = "bob" let last: String = "barker" } let worker = Person() worker.first worker.last // Approach B class Person2 { let first2: String let last2: String i
// Approach A
class Person {
let first: String = "bob"
let last: String = "barker"
}
let worker = Person()
worker.first
worker.last
// Approach B
class Person2 {
let first2: String
let last2: String
init() {
self.first2 = "bill"
self.last2 = "williams"
}
}
let dealer = Person2()
dealer.first2
dealer.last2
我为什么要用一种方法而不是另一种方法 当我在变量中输入已知的默认值时,我使用第一个版本。我使用第二个来表示任何可能根据传入init的内容进行更改的内容 因此,我对上述内容的首选版本是:
// Approach A
class Person {
let first: String = "bob"
let last: String = "barker"
}
let worker = Person()
worker.first
worker.last
// Approach B
class Person2 {
let first2: String
let last2: String
init(first2: String, last2: String) {
self.first2 = first2
self.last2 = last2
}
}
let dealer = Person2(first2: "bill", last2: "williams")
dealer.first2
dealer.last2
当我在变量中输入已知的默认值时,我使用第一个版本。我使用第二个来表示任何可能根据传入init的内容进行更改的内容 因此,我对上述内容的首选版本是:
// Approach A
class Person {
let first: String = "bob"
let last: String = "barker"
}
let worker = Person()
worker.first
worker.last
// Approach B
class Person2 {
let first2: String
let last2: String
init(first2: String, last2: String) {
self.first2 = first2
self.last2 = last2
}
}
let dealer = Person2(first2: "bill", last2: "williams")
dealer.first2
dealer.last2
如果属性始终采用相同的初始值,请提供默认值,而不是在初始值设定项中设置值。最终结果是相同的,但默认值将属性的初始化与其声明更紧密地联系在一起。它使初始值设定项更短、更清晰,并使您能够从中推断属性的类型默认值。默认值还使您更容易利用默认初始值设定项和初始值设定项继承,如本章后面所述。“
摘自:苹果公司的《Swift编程语言》。iBooks。如果属性始终采用相同的初始值,请提供默认值,而不是在初始值设定项中设置值。最终结果是相同的,但默认值将属性的初始化与其声明更紧密地联系在一起。它使初始值设定项更短、更清晰,并使您能够从中推断属性的类型默认值。默认值还使您更容易利用默认初始值设定项和初始值设定项继承,如本章后面所述。“
摘自:苹果公司的《快速编程语言》(The Swift Programming Language)。iBooks。选择一种并坚持下去。就我个人而言,我永远不会做你在一家公司所做的事情(除非我很懒或正在测试某些东西)。最好将初始化放在方法中,以便读者清楚这些值的设置位置。为什么还要尝试创建具有固定属性值的类?@Abizern这是初始化类属性的方法示例,而不是说明某个属性是否应该是
var
或let
如果为属性设置默认值,然后在声明属性时设置它们是有意义的。如果没有,那么在初始化器中设置它们。如果你仔细想想,这不是一个很难的选择。选择一个并坚持它。就我个人而言,我决不会做你在。最好将初始化放在方法中,以便读者清楚这些值的设置位置。为什么还要尝试创建具有固定属性值的类?@Abizern这是初始化类属性的方法示例,而不是说明某个属性是否应该是var
或let
如果为属性设置默认值,然后在声明属性时设置它们是有意义的。如果没有,则在初始值设定器中设置它们。如果您仔细考虑,这不是一个很难的选择。+1在此处也联机:+1在此处也联机: