English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Swift 구조체

Swift 구조체는 코드를 구축하는 데 사용되는 일반적이고 유연한 구조체입니다。

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

C와 Objective C와 다른 점은:

  • 구조체는 구현 파일과 인터페이스를 포함하지 않아야 합니다。

  • 구조체는 단일 파일을 생성할 수 있으며, 시스템이 다른 코드를 대상으로 자동으로 외부 인터페이스를 생성합니다。

구조체는 항상 복사된 방식으로 코드에서 전달되며, 따라서 값은 변경할 수 없습니다。

문법

구조체를 정의하는 데는 구조체 키워드를 사용합니다:

struct nameStruct { 
   정의 1
   정의 2
   ……
   정의 N
}

온라인 예제

MarkStruct라는 구조체를 정의하며, 구조체의 속성은 학생의 세 과목의 점수이며 데이터 타입은 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'를 사용하여 학생의 성적을 접근합니다. 구조체 멤버는 mark로 초기화됩니다1, 마크2, 마크3을 사용하여, 데이터 타입이 정수입니다.

그런 다음 우리는 let 키워드를 사용하여 구조체 studentMarks() 예제를 생성하고 marks에 전달합니다.

마지막으로 우리는 . 호를 사용하여 구조체 멤버의 값을 접근할 수 있습니다.

다음 예제는 구조체 예제를 통해 값을 전달하고 구조체를 복사하는 것을 보여줍니다:

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타입.

  • 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

위 예제에서는 구조체 markStruct를 정의했으며, mark, mark, mark 세 개의 멤버 속성을 가집니다:1, 마크2 마크와3구조체 내에서 멤버 속성은 self 키워드를 사용하여 정의됩니다.

예제에서는 구조체 예제가 값을 전달하는 방식을 잘 이해할 수 있습니다.