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

Основы Swift

Операторы в Swift

Контроль потока Swift

Коллекции Swift

Функции Swift

Swift высокий уровень

Структуры Swift

Структуры Swift - это универсальный и гибкий конструкт, используемый для создания кода.

Мы можем определить свойства структуры (константы, переменные) и добавить методы, чтобы расширить функциональность структуры.

В отличие от C и Objective C:

  • Структура не требует включения файла реализации и интерфейса.

  • Структура позволяет нам создать единую файловую систему, и система автоматически создает внешние интерфейсы для другого кода.

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

Синтаксис

Мы определяем структуру с помощью ключевого слова struct:

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'. Члены структуры инициализируются mark1, mark2, mark3, тип данных - целое число.

Затем мы используем 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Тип.

  • точка в трёхмерной системе координат, обёрнутая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

В приведенных выше примерах мы определили структуру markStruct, три свойства: mark1, mark2 и mark3. Внутри структуры свойства используются с помощью ключевого слова self.

Из примера мы можем хорошо понять, что пример структуры передается по значению.