Swift 结构体

Swift 结构体

Swift 4提供了一种灵活的构建模块,可以使用结构体。通过使用这些结构体,可以定义构建方法和属性。

与C和Objective C不同

  • 结构体不需要实现文件和接口。

  • 结构体允许我们创建单个文件,并自动将其接口扩展到其他代码块。

在结构体中,变量的值是通过返回旧值的副本来复制和传递的,从而无法改变这些值。

语法

Structures are defined with a 'Struct' Keyword.
struct nameStruct {
   Definition 1
   Definition 2
   ---
   Definition N
}

结构的定义

例如,假设我们需要访问包含三个科目成绩的学生记录,并计算三个科目的总分。在这里,markStruct被用于使用’int’数据类型将一个结构初始化为三个成绩。

struct MarkStruct {
   var mark1: Int
   var mark2: Int
   var mark3: Int
}

访问结构体及其属性

结构体的成员通过结构体名称进行访问。结构体的实例通过’let’关键字进行初始化。

struct studentMarks {
   var mark1 = 100
   var mark2 = 200
   var mark3 = 300
}

let marks = studentMarks()
print("Mark1 is \(marks.mark1)")
print("Mark2 is \(marks.mark2)")
print("Mark3 is \(marks.mark3)")

当我们在playground上运行上述程序时,我们得到以下结果:

当我们在playground上运行上述程序时,我们得到以下结果:

Mark1 is 100
Mark2 is 200
Mark3 is 300

学生的成绩通过结构名字’studentMarks’进行访问。这个结构的成员被初始化为mark1、mark2和mark3,其值为整数类型。然后使用’let’关键字将结构’studentMarks()’传递给’marks’。从此以后,’marks’将包含结构的成员值。现在通过使用’.’和初始化名字来访问结构成员的值来打印这些值。

struct MarksStruct {
   var mark: Int

   init(mark: Int) {
      self.mark = mark
   }
}

var aStruct = MarksStruct(mark: 98)
var bStruct = aStruct     // aStruct and bStruct are two structs with the same value!
bStruct.mark = 97

print(aStruct.mark)      // 98
print(bStruct.mark)      // 97

当我们使用playground运行上述程序时,我们会得到以下结果-

98
97

构建结构的最佳使用实践

Swift 4语言提供了定义结构作为自定义数据类型以构建函数块的功能。结构的实例通过其值传递给定义的块以进行进一步的操作。

需要使用结构的原因

  • 封装简单的数据值。

  • 通过“值”而不是“引用”复制封装的数据及其相关属性。

  • 结构用于“复制”和“引用”。

Swift 4中的结构通过其值传递其成员,而不是通过其引用。

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
   }
}

var marks = markStruct(mark1: 98, mark2: 96, mark3:100)
print(marks.mark1)
print(marks.mark2)
print(marks.mark3)

当我们在playground中运行上述程序时,我们会得到以下结果 –

98
96
100

另一个例子

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
   }
}

var fail = markStruct(mark1: 34, mark2: 42, mark3: 13)

print(fail.mark1)
print(fail.mark2)
print(fail.mark3)

当我们在playground中运行上面的程序时,我们得到以下结果-

34
42
13

首先定义了名为markStruct的结构体,包括它的成员mark1mark2mark3。然后初始化成员类的变量以保存整数值。接着使用self关键字创建了结构体成员的副本。一旦创建了结构体成员的副本,就将带有参数marks的结构块传递给变量marks,此时marks将保存学生的分数。然后将分数打印出来,分别为98、96和100。接下来,对于相同的结构体成员,使用名为fail的另一个实例来指向不同的分数。然后打印出结果,分别为34、42和13。这清楚地说明了结构体将拥有成员变量的副本,然后将成员传递给下一个函数块。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程