Latest web development tutorials

스위프트 클래스

신속한 클래스는 일반적으로 유연한 구조를 구축하기 위해 사용되는 코드이다.

우리는 클래스의 속성 (상수, 변수)와 메소드를 정의 할 수 있습니다.

그리고 다른 프로그래밍 언어는 스위프트가 별도의 인터페이스 및 구현 파일에 사용자 정의 클래스를 생성 할 필요가 없습니다, 다르다. 당신이 하나의 파일에서 클래스를 정의하는 것이다해야 시스템은 자동으로 다른 외부 인터페이스에 대한 코드를 생성 할 것이다.

체형과 구조 비교

스위프트 클래스와 구조는 많은 공통점을 가지고있다. 공통 즉 :

  • 값을 저장하는 데 사용되는 정의 속성
  • 기능을 제공하는 방법을 정의
  • 정의 스크립트 종속의 값에 액세스하는 데 사용되는
  • 생성자를 정의하는 초기 값을 생성하는 데 사용
  • 기본값을 향상시키기 위해 구현되는 기능을 확장하여
  • 계약에 부합하는 특정 표준 기능을 제공합니다

구조에 비해 클래스는 다음과 같은 추가 기능을 가지고 있습니다 :

  • 상속은 클래스가 다른 클래스의 기능을 상속 할 수 있습니다
  • 형식 변환 클래스 인스턴스의 런타임 유형 검사 및 해석을 허용
  • 해체는 할당 된 자원을 해제 할 수있는 클래스 인스턴스를 할 수 있습니다
  • 참조 횟수는 클래스에 여러 참조 할 수 있습니다

구문 :

Class classname {
   Definition 1
   Definition 2
   ……
   Definition N
}

클래스 정의

class student{
   var studname: String
   var mark: Int 
   var mark2: Int 
}

클래스를 인스턴스화 :

let studrecord = student()

import Cocoa

class MarksStruct {
    var mark: Int
    init(mark: Int) {
        self.mark = mark
    }
}

class studentMarks {
    var mark = 300
}
let marks = studentMarks()
print("成绩为 \(marks.mark)")

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

成绩为 300

참조 유형 클래스 속성으로

클래스의속성을 통해 액세스 할 수 있습니다.형식은 다음과 같습니다인스턴스화 클래스 이름 속성 이름 :

import Cocoa

class MarksStruct {
   var mark: Int
   init(mark: Int) {
      self.mark = mark
   }
}

class studentMarks {
   var mark1 = 300
   var mark2 = 400
   var mark3 = 900
}
let marks = studentMarks()
print("Mark1 is \(marks.mark1)")
print("Mark2 is \(marks.mark2)")
print("Mark3 is \(marks.mark3)")

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

Mark1 is 300
Mark2 is 400
Mark3 is 900

신원 연산자

클래스가 참조 형식이기 때문에, 동시에 배경 클래스 인스턴스에 대한 참조에 상수와 변수가 복수 일 수있다.

두 상수 또는 변수가 같은 클래스의 인스턴스를 참조 여부를 결정하기 위해, 스위프트는 두 개의 동일한 연산자를 내장 :

신원 연산자동일하지 않은 연산자
운영자는 다음과 같습니다 === 운영자는 :! ==
두 상수 또는 변수에 해당하는 클래스 반환의 동일한 인스턴스를 참조하는 경우 두 개의 서로 다른 상수 또는 변수 참조하는 경우 클래스 인스턴스는 true를 반환

import Cocoa

class SampleClass: Equatable {
    let myProperty: String
    init(s: String) {
        myProperty = s
    }
}
func ==(lhs: SampleClass, rhs: SampleClass) -> Bool {
    return lhs.myProperty == rhs.myProperty
}

let spClass1 = SampleClass(s: "Hello")
let spClass2 = SampleClass(s: "Hello")

if spClass1 === spClass2 {// false
    print("引用相同的类实例 \(spClass1)")
}

if spClass1 !== spClass2 {// true
    print("引用不相同的类实例 \(spClass2)")
}

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

引用不相同的类实例 SampleClass