1. 结构体的定义与输出

struct 结构体名称 {

    statement

    ......

}

当要输出结构体中某个量的值, 可以通过 "结构体名称.量的名称" 来实现

当用结构体给一个常量或者变量赋值的时候, 相当于给这个结构体起一个别名

结构体中任意类型的值在传递的时候总是被拷贝

例如, 现在想要创造一个动物园管理系统 :

struct sZoo {

    let zooName = "BeijingZoo"

    var name : String

}

let animal = sZoo(name : "Tiger") //对结构体的实例化

print(animal.name) //结果 : Tiger

var newAnimal = sZoo(name : "Tiger")

newAnimal.name = "Elephant" //对结构体中属性的修改

print(newAnimal.name) //结果 : Elephant

2. 结构体的方法

Swift 中的枚举一样, 同样可以给结构体添加方法从而实现拓展结构体的功能

Swift 中, 结构体中的方法无法更改结构体中某一个量的数值, 包括变量

struct sZoo {

    let zooName = "BeijingZoo"

    var animalName1 = "Tiger"

    var animalName2 = "Elephant"

    func printZooName() {

        print(zooName)

}

    func sayHelloToAnimalName1() {

        print("Hello, \(animalName1)!")

    }

}

let zoo = sZoo()

zoo.printZooName() //结果 : BeijingZoo

zoo.sayHelloToAnimalName1() //结果 : Hello, Tiger!

3. 结构体的下标

一个结构体可以为其定义多个下标, 并且下标会基于传入的索引值的类型, 选择合适的下标重载使用

下标没有限制单个维度, 可以使用多个输入形式参数来定义下标, 满足自定义类型的需求

可以使用关键字 subscript 来定义下标, 并且指定一个或者多个输入形式参数和返回类型

struct MySubscript {

    var number : Int

    subscript(num : Int) -> Int {

        return number * num

    }

}

let index = MySubscript(number : 4)

print(index[10]) //结果 : 40