Swift 用setter初始化结构变量
我是Swift新手,我希望能够编写一个属性设置器,在初始化时它也将用作构造函数:Swift 用setter初始化结构变量,swift,oop,swift4,Swift,Oop,Swift4,我是Swift新手,我希望能够编写一个属性设置器,在初始化时它也将用作构造函数: struct Person { private var name: String { get { return self.name; } set { self.name = name; } } } var Murad = Person(name: "Murad"); 当我运行此代码时,
struct Person {
private var name: String {
get {
return self.name;
}
set {
self.name = name;
}
}
}
var Murad = Person(name: "Murad");
当我运行此代码时,返回此错误
传递给不带参数的调用的参数
发生此错误的原因是该属性是一个计算属性,并且是私有的(只能在类中更改),因此对于编译器,没有(memberwise)初始值设定项,只能使用没有参数的默认初始值设定项
Person()
幸运的是,当您运行代码时,您将进入一个无限循环(这会导致溢出崩溃),否则会收到此错误消息
如果需要常量,只需将结构成员声明为let
struct Person {
let name: String
}
let murad = Person(name: "Murad")
print(murad)
发生此错误的原因是该属性是一个计算属性,并且是私有的(只能在类中更改),因此对于编译器,没有(memberwise)初始值设定项,只能使用没有参数的默认初始值设定项Person()
幸运的是,当您运行代码时,您将进入一个无限循环(这会导致溢出崩溃),否则会收到此错误消息
如果需要常量,只需将结构成员声明为let
struct Person {
let name: String
}
let murad = Person(name: "Murad")
print(murad)
为什么要创建无限循环?如果添加initalizer my struct,这也是返回错误。self.name=name
调用setter的setter调用setter的setter调用setter的setter调用setter的setter调用setter的setter调用setter的setter…为什么要创建无限循环?如果添加initalizer my struct,这也是返回错误。self.name=name
调用setter的setter调用调用setter的setter调用setter的setter调用调用setter的setter的setter…