struct

时间:2017-05-27 11:03:50

标签: arrays swift struct constructor

我有两个结构。第一个只有原始类型,第二个有第一个类型和另一个基本类型。我的问题是当我尝试创建第二个的新实例时。这是我的示例代码:

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)

这是消息     源文件中的字符无效

很抱歉西班牙语的名字和评论,这只是我要学习结构

的一个例子

3 个答案:

答案 0 :(得分:0)

PlaygroundScreen

我已经验证了您的结果,但它给出了正确的结果。查找屏幕截图

以下是代码段:

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)])

答案 1 :(得分:0)

“源文件中的无效字符”错误与您的代码无关。大多数情况下,它是由一个不可见的字符(非破坏空间)引起的,你通过按选项+空格意外键入。在非美国键盘上(在我的情况下是法语,在你的是西班牙语),你经常需要使用选项键来访问一些特殊字符。当您快速键入时,这有时会导致您在释放选项键之前按空格键。

我找到了解决方法。请参阅此帖子:http://stackoverflow.com/a/34696032/5237560

简而言之,我将Option + Space快捷方式重新配置为不会在源文件中生成任何字符的内容。

答案 2 :(得分:-1)

您的代码真的难以阅读。您应该考虑遵循普遍接受的最佳实践并添加一些间距。除此之外,您的代码原则几乎是正确的。

就我而言,Structs通常不会被改变,所以如果你不需要改变它们,你也应该考虑使用内部变量。这是一个例子:

request.host()