【问题标题】:Struct variable initialize with setter使用 setter 初始化结构变量
【发布时间】:2018-03-08 16:57:37
【问题描述】:

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

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

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

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

传递给不带参数的调用的参数

【问题讨论】:

标签: swift oop swift4


【解决方案1】:

发生错误是因为该属性是计算属性并且它是私有的(只能在类内更改),因此对于编译器来说,没有(成员方式)初始化程序,只能使用不带参数的默认初始化程序Person() .

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

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

struct Person {
    let name: String
}

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

【讨论】:

  • 为什么要创建无限循环?如果添加 initalizer 我的结构,这也是返回错误。
  • self.name = name 调用setter 调用setter 调用setter 调用setter 调用setter 调用setter 调用setter 调用setter ...
猜你喜欢
  • 1970-01-01
  • 2011-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-07
  • 1970-01-01
  • 2012-08-18
  • 2011-12-25
相关资源
最近更新 更多