Почему я получаю ошибку «Дополнительный аргумент: студенты» в моем коде

#arrays #swift #struct

#массивы #swift #структура

Вопрос:

Я получаю ошибку, указанную в названии моего вопроса, и я не знаю, почему или как ее устранить? Начинающий любитель 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)
  

Моя конечная цель — заполнить массив студентов типа Student, что само по себе сбивает меня с толку, но я просто пытаюсь преодолеть это первое препятствие.

Ответ №1:

Вам нужно избавиться от = []

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

 } 
  

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

Обсуждение:

Когда вы добавляете значение по умолчанию для свойства внутри своей структуры, оно не учитывает его в своем автоматическом init методе, плюс вы объявляете students как массив и отправляете один объект типа Student , поэтому оберните его внутрь [] , если вам нужно иметь оба, вы можете добавить еще один init, как показано ниже

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

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

Ответ №2:

students — это массив Student, он же [Student], поэтому вам нужно передать [student1] или изменить let students на Student