Swift: Methods (Методы)

Методы — это функции прикрепленные к типу (как ссылочному типу так и значимому типу) или его экземпляру и имеющие доступ к его переменным
По сути все было описано в разделе Functions (Функции)
Как я уже говорил есть доступ к переменным, вызываются методы по точке

Система именования методов в Swift обычно подразумевает, что имя метода заканчивается на By, With, For, таким образом первый параметр не требует внешнего имени, а у последующих параметров локальное имя будет являться обязательным внешним.

Разница есть между Swift 1.2 и Swift 2.0 в поведении по умолчанию при использовании локальных и внешних имен параметров

Аналог функции incrementBy в Swift 1.2 выглядел бы так

что позволило бы ее вызвать так

Ну а если вернуться к методам, то сделать первый параметр с обязательным внешним именем можно с помощью #, а отменить обязательное внешнее имя для последующих параметров с помощью символа подчеркивания

Вызов будет соответственно уже таким

Swift 2.0
Но в Swift 2.0 функции и методы стали работать одинаково и убрали #, позволяющей сделать локальное имя аргумента — внешним, и теперь исчезла возможность первый аргумент заставить вызывать с внешним именем

Так что определение изначального метода из класса идентично для функции

Но пропуск внешнего имени в методах по прежнему работает, впрочем как и в функциях. Так что метод можно определить так

И вызвать его так


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

Изменение значимых типов с помощью методов экземпляра возможно только если обозначить метод с помощью ключевого слова mutating

Стоит учесть что после этого будет создана новая структура и записана поверх старой

Так же в mutating методе есть возможность создавать новый обьект посредством присвоения self

С помощью mutating можно перещелкивать значение enum

Type Methods — методы типа (статические методы)
Так же как и свойства — методы могут принадлежать не только экземпляру типа но и самому типу
Правила определения по сути такие же — ключевое слово static, а для классов можно указать class если нужно оставить возможность переопределить в наследниках

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *