Latest web development tutorials

Swift подстрочный скрипт

Подстрочный сценарий может быть определен в классе (Class), структура (структура) и перечисление (перечисление) этих целей можно считать доступ к объекту, коллекция ярлыков или последовательностей не нужно вызывать специфичные для экземпляра задания и доступ методы.

Например, скрипт с доступом к элементу экземпляра индекс массива (Array) может написать SomeArray [Индекс], доступ к элементу экземпляра словаря (словарь) может написать someDictionary [ключ].

Для той же цели можно определить несколько сценарий подстрочного, различные типы значений индекса перегруженным, а число значений индекса может быть во множественном числе.


Подстрочный Синтаксис сценариев и приложений

грамматика

Подстрочный сценарий позволяет значений индекса путем пропускания одного или нескольких из следующих случаев в квадратных скобках для доступа и назначение, например.

Синтаксис похож на смешивание методов экземпляра и вычислительной свойства.

И определение метода экземпляра аналогично определению индекса индекса сценария слова явно объявить Сенат (один или несколько) и тип возвращаемого значения.

И примеры различных методов подстрочный сценарий может быть установлен для чтения и записи или только для чтения. Таким образом, немного как методы получения и установки вычислительных свойств:

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

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 хранится тип значения подразумеваемые словарь , После словаря экземпляр создается способом целое значение сценария индекс 2, присвоенный словарной индекс экземпляра для размещения птицы.


Варианты сценариев Подстрочный

Подстрочный скрипт позволяет любое количество параметров в индекс, и каждый тип также не предел в Сенат.

Возврат Значение индекса сценария может быть любого типа.

Подстрочный скрипт может использовать переменные параметры и переменные параметры.

Класс или структура может быть в соответствии со своими потребностями, чтобы обеспечить более из следующих стандартных сценариев, при определении сценария индекс путем передачи параметров, чтобы отличить тип, он будет автоматически соответствовать соответствующей подстрочные сценариев во время выполнения сценария индекс, который являетсяперегружена нижний индекс сценария.

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

Матричная структура предоставляет два конструктора аргументы передаются два параметра являются строки и столбцы, создать массив типа Double достаточно, чтобы вместить количество строк * столбцов. Для хранения, размер каждого элемента массива и массив начальное значение 0.0.

Можно построить новый экземпляр Matrix, передавая соответствующую строку и столбец числа.