Swift笔记-结构体

  1. 1. 语法
  2. 2. 实例
  3. 3. 结构体应用

语法

1
2
3
4
5
6
struct nameStruct { 
Definition 1
Definition 2
……
Definition N
}

实例

1
2
3
4
5
struct MarkStruct{
var mark1: Int
var mark2: Int
var mark3: Int
}

我们可以通过结构体名来访问结构体成员。
结构体实例化使用 let 关键字:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import Cocoa

struct studentMarks {
var mark1 = 100
var mark2 = 78
var mark3 = 98
}
let marks = studentMarks()
print("Mark1 是 \(marks.mark1)")
print("Mark2 是 \(marks.mark2)")
print("Mark3 是 \(marks.mark3)")
//Mark1 是 100
//Mark2 是 78
//Mark3 是 98
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import Cocoa

struct MarksStruct {
var mark: Int

init(mark: Int) {
self.mark = mark
}
}
var aStruct = MarksStruct(mark: 98)
var bStruct = aStruct // aStruct 和 bStruct 是使用相同值的结构体!
bStruct.mark = 97
print(aStruct.mark) // 98
print(bStruct.mark) // 97

结构体应用

当符合一条或多条以下条件时,请考虑构建结构体:

  • 结构体的主要目的是用来封装少量相关简单数据值。
  • 有理由预计一个结构体实例在赋值或传递时,封装的数据将会被拷贝而不是被引用。
  • 任何在结构体中储存的值类型属性,也将会被拷贝,而不是被引用。
  • 结构体不需要去继承另一个已存在类型的属性或者行为。

结构体实例是通过值传递而不是通过引用传递。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import Cocoa

struct markStruct{
var mark1: Int
var mark2: Int
var mark3: Int

init(mark1: Int, mark2: Int, mark3: Int){
self.mark1 = mark1
self.mark2 = mark2
self.mark3 = mark3
}
}

print("优异成绩:")
var marks = markStruct(mark1: 98, mark2: 96, mark3:100)
print(marks.mark1)
print(marks.mark2)
print(marks.mark3)

print("糟糕成绩:")
var fail = markStruct(mark1: 34, mark2: 42, mark3: 13)
print(fail.mark1)
print(fail.mark2)
print(fail.mark3)
//优异成绩:
//98
//96
//100
//糟糕成绩:
//34
//42
//13