스위프트 구조
신속한 구조는 일반적이고 유연한 구조를 구축하기 위해 사용되는 코드이다.
우리는 구조 (상수, 변수)의 속성을 정의하는 기능적인 구조를 확장하는 방법을 추가 할 수있다.
C와 목표 C는 다르다 :
구조 구현 파일 및 인터페이스를 포함 할 필요가 없다.
구조 우리는 단일 파일을 생성 할 수 있으며, 시스템은 자동으로 다른 외부 인터페이스에 대한 코드를 생성 할 것이다.
구조는 항상 코드 전송의 방법으로 복제, 그래서 그 값은 수정할 수 없습니다.
문법
우리는 키워드 구조체를 통해 구조를 정의 :
struct nameStruct { Definition 1 Definition 2 …… Definition N }
예
학생들은 세 과목, 데이터 유형의 지능 점수를 위해 우리는 MarkStruct라는 구조, 속성 구조를 정의 :
struct MarkStruct{ var mark1: Int var mark2: Int var mark3: Int }
우리는 구조 이름으로 구조에 올 수 있습니다.
송출 키워드를 사용하는 구조의 예 :
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를 사용합니다.
마지막으로, 구조 부재에 액세스 할 수값을 통과시켰다.
전통적인 값 구조물의 클로닝 구조의 실시 예에 의해 인스턴스화 :
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
유형입니다. - 특정 범위 내에서 경로는 패키지
start
속성과length
두 가지 모두의 특성,Int
유형입니다. - 입체 패키지 시스템 좌표
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, 재산의 3 명을 정의합니다. 생체 사용하여 멤버 속성의 구조 자체 키워드를 사용합니다.
예제에서 우리는 잘 구조 인스턴스가 값에 의해 전달됩니다 이해할 수있다.