Latest web development tutorials

스위프트 첨자 스크립트

첨자 스크립트 클래스 (클래스), 구조 (구조) 및 이러한 목표의 열거 (열거)에서 정의 할 수는 개체에 대한 액세스 고려 될 수있다, 바로 가기 또는 시퀀스의 컬렉션은 인스턴스 별 할당 및 액세스를 호출 할 필요가 없습니다 방법.

예를 들어, 배열 인덱스 (배열) 인스턴스 요소에 액세스 할 수있는 스크립트가 someArray [인덱스], 요소 액세스 [키] someDictionary을 작성할 수 있습니다 사전 (사전) 인스턴스를 작성할 수 있습니다.

동일한 목적은 여러 첨자 스크립트를 정의 할 수 들어, 인덱스 값의 종류는 과부하하고, 인덱스 값의 수는 복수 일 수도있다.


첨자 스크립트 구문 및 응용 프로그램

문법

첨자 스크립트는 인스턴스에 대한 액세스 및 할당에 대괄호 다음과 같은 경우 중 하나 이상을 전달하여 인덱스 값을 수 있습니다.

구문은 인스턴스 방법과 계산 속성을 혼합 유사하다.

그리고 인스턴스 메소드의 정의는 명시 상원 (하나 이상)을 선언 타입을 리턴 키워드가 첨자 첨자 스크립트의 정의와 유사하다.

다른 방법의 예로는 첨자 스크립트 읽기 쓰기 또는 읽기 전용으로 설정 될 수있다. 이러한 방식으로 getter 및 setter 계산 속성 같은 비트 :

subscript(index: Int) -> Int {
    get {
        // 用于下标脚本值的声明
    }
    set(newValue) {
        // 执行赋值操作
    }
}

예 1

import Cocoa

struct subexample {
    let decrementer: Int
    subscript(index: Int) -> Int {
        return decrementer / index
    }
}
let division = subexample(decrementer: 100)

print("100 除以 9 等于 \(division[9])")
print("100 除以 2 等于 \(division[2])")
print("100 除以 3 等于 \(division[3])")
print("100 除以 5 等于 \(division[5])")
print("100 除以 7 等于 \(division[7])")

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

100 除以 9 等于 11
100 除以 2 等于 50
100 除以 3 等于 33
100 除以 5 等于 20
100 除以 7 等于 14

위의 예에서 subexample 구조 나누기 연산의 인스턴스를 생성한다. 구조 생성자 인수로 100의 값은 인스턴스 멤버 decrementer를 초기화 통과했다.

사용자는 예컨대 분할 [2] (100) 2 개로 분할 될 때, 첨자 스크립트 결과를 얻을 수있다.

예 2

import Cocoa

class daysofaweek {
    private var days = ["Sunday", "Monday", "Tuesday", "Wednesday",
        "Thursday", "Friday", "saturday"]
    subscript(index: Int) -> String {
        get {
            return days[index]   // 声明下标脚本的值
        }
        set(newValue) {
            self.days[index] = newValue   // 执行赋值操作
        }
    }
}
var p = daysofaweek()

print(p[0])
print(p[1])
print(p[2])
print(p[3])

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

Sunday
Monday
Tuesday
Wednesday

용법

다른 사용 시나리오 첨자 스크립트에 따르면, 또한 다른 의미를 가지고있다.

일반적으로 첨자 스크립트는 컬렉션 (수집), 바로 가기 목록 요소 (목록) 또는 시퀀스 (순서)에 액세스하는 데 사용됩니다.

당신은 자신의 특정 클래스에 인덱스 스크립트를 구현하거나 해당 기능을 제공하기 위해 구조체 무료입니다.

예를 들어, 신속한 사전 (사전) 안에 저장된 첨자 스크립트 인스턴스 값에 의해 액세스 동작을 달성한다. 동일한 유형의 스크립트 및 사전 인덱스 및 사전 값 유형 값에 사용 된 다음의 표준 값은 사전에 발을 인덱스 값에 할당된다 :

import Cocoa

var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
numberOfLegs["bird"] = 2

print(numberOfLegs)

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

["ant": 6, "bird": 2, "cat": 4, "spider": 8]

이 예제는 변수 이름 numberOfLegs을 정의하고 사전의 인스턴스가 키 세 쌍을 포함 초기화 문자 사전을 사용합니다. numberOfLegs 사전 저장된 값 형식 유추 사전 . 사전 인스턴스는 방식으로 새의 위치에 대한 사전 인스턴스 인덱스에 할당 된 스크립트 첨자이 정수 값을 만든 후.


첨자 스크립트 옵션

첨자 스크립트 인덱스에 임의 수의 매개 변수가 수, 각각의 유형은 상원에 제한하지 않는다.

스크립트의 반환 값 지수는 모든 유형이 될 수 있습니다.

첨자 스크립트는 변수 매개 변수와 변수 매개 변수를 사용할 수 있습니다.

유형을 구분하는 파라미터를 전달하여 첨자 스크립트를 정의 할 때 클래스 또는 구조는 다음과 같은 표준 스크립트를 더 제공하기 위해 자신의 필요에 따라 될 수 있고, 자동으로 어떤 적절한 첨자 스크립트 실행 첨자 스크립트 일치오버로드 첨자 스크립트.

import Cocoa

struct Matrix {
    let rows: Int, columns: Int
    var print: [Double]
    init(rows: Int, columns: Int) {
        self.rows = rows
        self.columns = columns
        print = Array(count: rows * columns, repeatedValue: 0.0)
    }
    subscript(row: Int, column: Int) -> Double {
        get {
            return print[(row * columns) + column]
        }
        set {
            print[(row * columns) + column] = newValue
        }
    }
}
// 创建了一个新的 3 行 3 列的Matrix实例
var mat = Matrix(rows: 3, columns: 3)

// 通过下标脚本设置值
mat[0,0] = 1.0
mat[0,1] = 2.0
mat[1,0] = 3.0
mat[1,1] = 5.0

// 通过下标脚本获取值
print("\(mat[0,0])")
print("\(mat[0,1])")
print("\(mat[1,0])")
print("\(mat[1,1])")

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

1.0
2.0
3.0
5.0

매트릭스 구조는 두 개의 파라미터들이 행과 열로되어 전달 된 두 생성자 인자를 제공 행 * 열 수를 수용 할 수있을만큼 이중형의 어레이를 생성한다. 스토리지 어레이의 각 요소의 크기가 0.0 배열 초기 값.

당신은 수의 해당 행과 열을 전달하여 새 Matrix 인스턴스를 구성 할 수 있습니다.