스위프트 구조체


Swift 구조체는 코드 작성을 위한 다양하고 유연한 구성입니다.

속성(상수, 변수)을 정의하고 구조에 메서드를 추가하여 구조의 기능을 확장할 수 있습니다.

C 및 Objective C와 다름:

  • 구조에는 구현 파일과 인터페이스가 포함될 필요가 없습니다.

  • 구조를 사용하면 단일 파일을 만들 수 있으며 시스템은 자동으로 다른 코드에 대한 외부 인터페이스를 생성합니다.

구조는 항상 복사를 통해 코드에 전달되므로 해당 값을 수정할 수 없습니다.

Syntax

키워드 struct:

struct nameStruct { 
   Definition 1
   Definition 2
   ……
   Definition N
}

Example

을 통해 구조를 정의합니다. 구조의 속성은 학생들의 세 과목 점수이고 데이터 유형은 Int:

입니다.
struct MarkStruct{
   var mark1: Int
   var mark2: Int
   var mark3: Int
}

구조 이름을 통해 구조 멤버에 접근할 수 있습니다.

구조는 let 키워드를 사용하여 인스턴스화됩니다.

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

예에서는 구조 이름 'studentMarks'를 통해 학생의 성적에 액세스합니다. 구조체 멤버는 mark1, mark2, mark3으로 초기화되며 데이터 유형은 정수입니다.

그런 다음 StudentMarks() 구조를 인스턴스화하고 let 키워드를 사용하여 마크에 전달합니다.

마지막으로 . 번호를 통해 구조체 멤버의 값에 액세스합니다.

다음 인스턴스화는 구조를 인스턴스화할 때 값을 전달하고 구조를 복제합니다.

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

위 프로그램 실행의 출력 결과는 다음과 같습니다.

98
97

구조 적용

코드에서 구조를 사용하여 다음을 수행할 수 있습니다. 사용자 정의 데이터 유형을 정의하십시오.

구조 인스턴스는 사용자 정의 데이터 유형을 정의하기 위해 항상 값으로 전달됩니다.

일반 지침에 따라 다음 조건 중 하나 이상이 충족되면 구조 구축을 고려하십시오.

  • 구조의 주요 목적은 소수의 관련 단순 데이터 값을 캡슐화하는 것입니다.

  • 구조 인스턴스가 할당되거나 전달될 때 캡슐화된 데이터가 참조되지 않고 복사될 것이라고 예상할 수 있는 이유가 있습니다.

  • 구조에 저장된 모든 값 유형 속성도 참조되는 대신 복사됩니다.

  • 구조는 다른 기존 유형의 속성이나 동작을 상속할 필요가 없습니다.

예를 들어 구조는 다음 상황에서 사용하기에 적합합니다.

  • 기하학적 모양의 크기는 width 속성과 height 속성을 ​​캡슐화합니다. 둘 다 Double 유형입니다. width属性和height属性,两者均为Double类型。

  • 一定范围内的路径,封装一个start属性和length属性,两者均为Int类型。

  • 三维坐标系内一点,封装xyz属性,三者均为Double

특정 범위 내의 경로는 start 속성과 length 속성을 ​​캡슐화하며, 둘 다 Int 유형입니다.

3차원 좌표계의 한 점은 x, yz 속성을 ​​캡슐화하며, 세 가지 모두 Double입니다. 입력하세요. 🎜🎜🎜🎜구조 인스턴스는 참조가 아닌 값으로 전달됩니다. 🎜
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

위의 예에서는 mark1, mark2 및 mark3의 세 가지 멤버 속성을 사용하여 markStruct 구조를 정의했습니다. 구조체 내에서 멤버 속성을 사용하는 경우 self 키워드를 사용하세요.

예제를 보면 구조체 인스턴스가 값으로 전달된다는 것을 잘 이해할 수 있습니다.