Массив внутри структуры

-2

У меня две структуры. Первый имеет только примитивные типы, а второй имеет тип первого и других примитивных типов. Моя проблема в том, что я пытаюсь создать новый экземпляр второго. Это мой пример кода:

struct Jugador{
    var nombre:String=""
    var posicion:String=""
    var dorsal:Int=0

    //Constructor
    init(nombre:String,posicion:String,dorsal:Int){
        self.nombre=nombre
        self.posicion=posicion
        self.dorsal=dorsal
    }
}


struct Equipo{
    //variable estatica registrar equipo
    static var registrar:Int=0

    var nombre:String=""
    var estadio:String=""
    var jugadores:[Jugador]=[Jugador]()

    //Constructor con jugadores
    init(nombre:String,estadio:String,jugadores:[Jugador]){
        self.nombre=nombre
        self.estadio=estadio
        self.jugadores=jugadores
        //al crear un equipo lo registro
        Equipo.registrarEquipo()
    }
    //funcion que registra a un equipo
    static func registrarEquipo(){
        registrar+=1
    }
}

var jugador1=Jugador(nombre:"portero",posicion:"portero",dorsal:1)
var jugador2=Jugador(nombre:"lateral",posicion:"defensa",dorsal:2)
var jugadores1=[jugador1,jugador2]
var equipo1=Equipo(nombre:"equipo1",estadio:"estadio1",jugadores:jugadores1)

Извините, моя ошибка в этой строке:

var equipo1=Equipo(nombre:"equipo1",estadio:"estadio1",jugadores:jugadores1)

это сообщение Недопустимый символ в исходном файле

Извините за испанские имена и комментарии, это просто пример, который я делаю, чтобы узнать о структурах

  • 0
    Для испанского es.stackoverflow.com
  • 0
    Какая у вас ошибка? "=" должен иметь одинаковые пробелы с обеих сторон "? Удалите пробелы перед Equipo для компиляции.
Теги:
arrays
struct
constructor

3 ответа

0
Лучший ответ

Изображение 174551

Я проверил ваши результаты, но он дает правильные результаты. Найти скриншот

Вот фрагмент кода:

struct Jugador{
    var nombre:String
    var posicion:String
    var dorsal:Int

    //Constructor
    init(nombre:String,posicion:String,dorsal:Int){
        self.nombre=nombre
        self.posicion=posicion
        self.dorsal=dorsal
    }
}


struct Equipo{
    //variable estatica registrar equipo
    static var registrar:Int=0

    var nombre:String=""
    var estadio:String=""
    var jugadores:[Jugador]=[Jugador]()

    //Constructor con jugadores
    init(nombre:String,estadio:String,jugadores:[Jugador]){
        self.nombre=nombre
        self.estadio=estadio
        self.jugadores=jugadores
        //al crear un equipo lo registro
        Equipo.registrarEquipo()
    }
    //funcion que registra a un equipo
    static func registrarEquipo(){
        registrar+=1
    }
}

var jugador1 = Jugador(nombre:"portero",posicion:"portero",dorsal:1)
var jugador2 = Jugador(nombre:"lateral",posicion:"defensa",dorsal:2)
var jugadores1 = [jugador1,jugador2]
var equipo1 = Equipo(nombre:"equipo1",estadio:"estadio1",jugadores:jugadores1)

print(equipo1)

И вот результат в Playground. Выполнено в Swift 3.1

Equipo(nombre: "equipo1", estadio: "estadio1", jugadores: [__lldb_expr_7.Jugador(nombre: "portero", posicion: "portero", dorsal: 1), __lldb_expr_7.Jugador(nombre: "lateral", posicion: "defensa", dorsal: 2)])
  • 0
    Да, это правда ... Я не знаю, но я копирую и вставляю ваш фрагмент, и теперь он просыпается ... большое спасибо
  • 0
    сравните код, возможно, будет добавлен какой-то специальный символ, который может выдавать ошибку. Также, пожалуйста, примите ответ.
0

Ошибка "Недопустимый символ в исходном файле" на самом деле не связана с вашим кодом. Большую часть времени он вызван невидимым персонажем (без разрыва), который вы случайно набираете, нажимая опцию + Пробел. На неамериканских клавиатурах (французский в моем случае, испанский в вашем) вам часто приходится использовать ключ опциона для доступа к некоторым специальным символам. Когда вы печатаете быстро, это иногда приводит к тому, что вы нажимаете клавишу пробела перед тем, как отпустить клавишу выбора.

Я нашел обходное решение для этого. Посмотреть это сообщение: qaru.site/questions/501584/...

В двух словах я переконфигурировал ярлык Option + Space на то, что не создало бы ни одного символа в исходном файле.

  • 0
    спасибо, я уверен, это была проблема.
-1

Ваш код очень трудно прочитать. Вы должны рассмотреть следующие общепринятые рекомендации и добавить некоторые пробелы. Кроме того, принцип вашего кода почти прав.

Насколько мне известно, Structs, как правило, не предназначены для мутации, поэтому вам также следует подумать о том, чтобы сделать внутренние vars, если вам не нужно их менять. Вот пример:

struct Jugador {
    let nombre: String
    let posicion: String
    let dorsal: Int

    //Constructor
    init(nombre: String, posicion: String, dorsal: Int) {
        self.nombre = nombre
        self.posicion = posicion
        self.dorsal = dorsal
    }
}


struct Equipo {

    static var registrar: Int = 0

    let nombre: String
    let estadio: String
    let jugadores: [Jugador]

    //Constructor con jugadores
    init(nombre: String, estadio: String, jugadores: [Jugador]){
        self.nombre = nombre
        self.estadio = estadio
        self.jugadores = jugadores
        Equipo.registrar += 1
    }
}
let jugador1 = Jugador(nombre: "portero", posicion: "portero", dorsal: 1)
let jugador2 = Jugador(nombre: "lateral", posicion: "defensa", dorsal: 2)
let jugadores1 = [jugador1, jugador2]
let equipo1 = Equipo(nombre: "equipo1", estadio: "estadio1", jugadores: jugadores1)

equipo1.jugadores.first?.nombre
  • 0
    структура поддерживает var
  • 0
    Я знаю. Вот почему я сказал, что они обычно не предназначены для мутации, чтобы уменьшить риск побочных эффектов. На днях я увидел очень интересный разговор об неизменных структурах и их преимуществах. К сожалению, я не могу найти его больше, но если вы воспользуетесь преимуществами неизменяемых структур в swift, вы наверняка найдете несколько видео / постов. Вам стоит это увидеть! :)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню