스위프트 구조체
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
类型。三维坐标系内一点,封装
x
,y
和z
属性,三者均为Double
start
속성과 length
속성을 캡슐화하며, 둘 다 Int
유형입니다. 3차원 좌표계의 한 점은 x
, y
및 z
속성을 캡슐화하며, 세 가지 모두 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 키워드를 사용하세요.
예제를 보면 구조체 인스턴스가 값으로 전달된다는 것을 잘 이해할 수 있습니다.