struct User {
let name: String
let age: Int
}
可用的成员明智的初始化程序:User(name: String, age: Int)
struct User {
let name: String
let age = 1
}
可用的成员明智的初始化程序:User(name: String)
struct User {
let name: String
var age = 1
}
可用的成员明智的初始值设定项:
User(name: String)
User(name: String, age: Int)
在情况2中,除非您将结构实例创建为变量,否则无法设置属性age
的值。
这是设计使然吗?还是这是Swift的成员明智的初始化程序中的限制?
答案 0 :(得分:3)
是的,这是设计使然。 age
在这里是一个常数,只能设置一次。如果要使用常量的默认值,请编写一个初始化程序。
struct User {
let name: String
let age: Int
init(name: String, age: Int = 1) {
self.name = name
self.age = age
}
}