首页 > 解决方案 > 为什么我的代码中出现错误“额外参数:学生”

问题描述

我收到问题标题中提到的错误,我不知道为什么或如何解决它?在这里开始 Swift 爱好者,所以请用可以理解的术语解释。非常感谢你。

struct Student {
    let firstName: String
    let lastName: String
    let grade: String
}

struct Classroom {
    let nameOfClass: String
    let students: [Student] = []
}

let student1 = Student(firstName: "Keith", lastName: "Grimes", grade: "F")
let class1 = Classroom(nameOfClass: "Swift", students: student1)

我的最终目标是填补一系列学生类型的学生,这本身就让我感到困惑,但我只是想克服这第一个障碍。

标签: arraysswiftstruct

解决方案


你需要摆脱= []

 struct Classroom {
    let nameOfClass: String
    let students: [Student]

 } 

let student1 = Student(firstName: "Keith", lastName: "Grimes", grade: "F")
let class1 = Classroom(nameOfClass: "Swift", students: [student1])

讨论:

当您在 struct 中为属性添加默认值时,它不会将其视为自动init方法,另外您声明students为数组并发送单个类型的对象,Student因此将其包装在里面[],如果您需要两者都可以添加另一个初始化,如下所示

struct Classroom {
    var nameOfClass: String
    var students: [Student] = []

    init(nameOfClass:String,students:[Student] = []) {
        self.nameOfClass = nameOfClass
        self.students = students
    }
}

推荐阅读