📜  Swift-结构

📅  最后修改于: 2020-12-25 04:32:55             🧑  作者: Mango


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

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

Mark1 is 100
Mark2 is 200
Mark3 is 300

通过结构名称“ studentMarks”访问学生分数。使用整数类型值将结构成员初始化为mark1,mark2,mark3。然后将结构studentMarks()传递给带有’let’关键字的’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

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

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)

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

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)

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

34
42
13

首先使用其成员mark1,mark2和mark3定义结构’markStruct’。现在,成员类的变量被初始化为保存整数值。然后,使用“自我”关键字创建结构成员的副本。创建结构成员的副本后,带有参数标记的结构块将传递到“标记”变量,该变量现在将保留学生标记。然后将标记打印为98、96、100。对于相同结构成员的下一步,使用另一个名为“ fail”的实例来指向具有不同标记的相同结构成员。然后将结果打印为34、42、13。这清楚地说明了结构将具有成员变量的副本,然后将成员传递给即将到来的函数块。