Struct变量用setter初始化

时间:2018-03-08 16:57:37

标签: swift oop swift4

我是Swift的新手,我希望能够编写一个属性setter,它在初始化时也将用作构造函数:

struct Person {
    private var name: String {
        get {
            return self.name;
        }
        set {
            self.name = name;
        }
    }
}

var Murad = Person(name: "Murad");

当我运行此代码错误时返回此错误

  传递给不带参数的调用的

参数

2 个答案:

答案 0 :(得分:2)

发生错误是因为属性是计算属性而且它是私有的(只能在类中更改),所以对于编译器,没有(成员)初始化器,只有默认的初始化器{{1}可以使用无参数。

您很幸运得到此错误消息,否则当您运行代码时,您将遇到无限循环(导致溢出崩溃)。

如果你想要一个常量,只需将结构成员声明为Person()

let

答案 1 :(得分:-1)

struct Person {
    let name: String
}

let person = Person(name: "Murad")
print(person)