Учебники

Свифт — Методы

В языке Swift 4 функции, связанные с определенными типами, называются методами. В Objective C классы используются для определения методов, в то время как язык Swift 4 предоставляет пользователю гибкость, чтобы иметь методы для классов, структур и перечислений.

Методы экземпляра

В языке Swift 4 доступ к экземплярам Classes, Structures и Enumeration осуществляется через методы экземпляра.

Методы экземпляра обеспечивают функциональность

  • Чтобы получить доступ и изменить свойства экземпляра
  • функциональность, связанная с потребностью экземпляра

Метод экземпляра может быть записан в фигурных скобках {}. Он имеет неявный доступ к методам и свойствам экземпляра типа. Когда вызывается конкретный экземпляр типа, он получает доступ к этому конкретному экземпляру.

Синтаксис

func funcname(Parameters) -> returntype {
   Statement1
   Statement2
   ---
   Statement N
   return parameters
}

пример

Live Demo

class calculations {
   let a: Int
   let b: Int
   let res: Int

   init(a: Int, b: Int) {
      self.a = a
      self.b = b
      res = a + b
   }
   
   func tot(c: Int) -> Int {
      return res - c
   }
   
   func result() {
      print("Result is: \(tot(c: 20))")
      print("Result is: \(tot(c: 50))")
   }
}
let pri = calculations(a: 600, b: 300)
pri.result()

Когда мы запускаем вышеуказанную программу, используя площадку, мы получаем следующий результат —

Result is: 880
Result is: 850

Вычисления класса определяют два метода экземпляра —

  • init () определен, чтобы добавить два числа a и b и сохранить их в результате ‘res’
  • tot () используется, чтобы вычесть ‘res’ из передачи значения ‘c’

Наконец, для печати расчетов используются методы со значениями для a и b. Методы экземпляра доступны с помощью «.» точечный синтаксис

Локальные и внешние имена параметров

Функции Swift 4 описывают как локальные, так и глобальные объявления для своих переменных. Точно так же соглашения об именах Swift 4 Methods также напоминают Objective C. Но характеристики локальных и глобальных объявлений имен параметров различаются для функций и методов. Первый параметр в Swift 4 именуется предлогами как «with», «for» и «by» для простого доступа к соглашениям об именах.

Swift 4 обеспечивает гибкость методов, объявляя имя первого параметра в качестве локальных имен параметров, а оставшиеся имена параметров — как глобальные имена параметров. Здесь ‘no1’ объявляется методами Swift 4 как локальные имена параметров. «no2» используется для глобальных объявлений и доступен через программу.

Live Demo

class division {
   var count: Int = 0
   func incrementBy(no1: Int, no2: Int) {
      count = no1 / no2
      print(count)
   }
}

let counter = division()
counter.incrementBy(no1: 1800, no2: 3)
counter.incrementBy(no1: 1600, no2: 5)
counter.incrementBy(no1: 11000, no2: 3)

Когда мы запускаем вышеуказанную программу, используя площадку, мы получаем следующий результат —

600
320
3666

Имя внешнего параметра с символом # и _

Несмотря на то, что методы Swift 4 предоставляют первые имена параметров для локальных объявлений, пользователь может изменить имена параметров с локальных на глобальные объявления. Это можно сделать, добавив префикс «#» к имени первого параметра. Таким образом, к первому параметру можно получить глобальный доступ по всем модулям.

Когда пользователю необходимо получить доступ к последующим именам параметров с помощью внешнего имени, имя метода переопределяется с помощью символа «_».

Live Demo

class multiplication {
   var count: Int = 0
   func incrementBy(no1: Int, no2: Int) {
      count = no1 * no2
      print(count)
   }
}

let counter = multiplication()

counter.incrementBy(no1: 800, no2: 3)
counter.incrementBy(no1: 100, no2: 5)
counter.incrementBy(no1: 15000, no2: 3)

Когда мы запускаем вышеуказанную программу, используя площадку, мы получаем следующий результат —

2400
500
45000

Собственная собственность в методах

Методы имеют неявное свойство, известное как «self», для всех экземпляров определенного типа. Свойство «Self» используется для ссылки на текущие экземпляры для его определенных методов.

Live Demo

class calculations {
   let a: Int
   let b: Int
   let res: Int

   init(a: Int, b: Int) {
      self.a = a
      self.b = b
      res = a + b
      print("Inside Self Block: \(res)")
   }
   
   func tot(c: Int) -> Int {
      return res - c
   }
   
   func result() {
      print("Result is: \(tot(c: 20))")
      print("Result is: \(tot(c: 50))")
   }
}

let pri = calculations(a: 600, b: 300)
let sum = calculations(a: 1200, b: 300)

pri.result()
sum.result()

Когда мы запускаем вышеуказанную программу, используя площадку, мы получаем следующий результат —

Inside Self Block: 900
Inside Self Block: 1500
Result is: 880
Result is: 850
Result is: 1480
Result is: 1450

Изменение типов значений из методов экземпляра

В Swift 4 языковые структуры и перечисления относятся к типам значений, которые не могут быть изменены его методами экземпляра. Тем не менее, язык Swift 4 обеспечивает гибкость для изменения типов значений путем «мутации» поведения. Mutate внесет любые изменения в методы экземпляра и вернется к исходной форме после выполнения метода. Также с помощью свойства «self» создается новый экземпляр для его неявной функции, который заменит существующий метод после его выполнения.

Live Demo

struct area {
   var length = 1
   var breadth = 1
   
   func area() -> Int {
      return length * breadth
   }
   mutating func scaleBy(res: Int) {
      length *= res
      breadth *= res
      print(length)
      print(breadth)
   }
}

var val = area(length: 3, breadth: 5)
val.scaleBy(res: 3)
val.scaleBy(res: 30)
val.scaleBy(res: 300)

Когда мы запускаем вышеуказанную программу, используя площадку, мы получаем следующий результат —

9
15
270
450
81000
135000

Собственная собственность для метода мутации

Методы мутации в сочетании со свойством self присваивают новый экземпляр определенному методу.

Live Demo

struct area {
   var length = 1
   var breadth = 1
   func area() -> Int {
      return length * breadth
   }
   mutating func scaleBy(res: Int) {
      self.length *= res
      self.breadth *= res
      print(length)
      print(breadth)
   }
}

var val = area(length: 3, breadth: 5)
val.scaleBy(res: 13)

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

39
65

Методы типа

Когда вызывается конкретный экземпляр метода, он вызывается как метод Instance; и когда метод вызывает конкретный тип метода, он называется «Методы типа». Методы типов для классов определяются ключевым словом func, а методы типов структур и перечислений определяются ключевым словом static перед ключевым словом func.

Методы типа вызываются и доступны с помощью ‘.’ синтаксис, где вместо вызова конкретного экземпляра вызывается весь метод.

Live Demo

class Math {
   class func abs(number: Int) -> Int {
      if number < 0 {
         return (-number)
      } else {
         return number
      }
   }
}

struct absno {
   static func abs(number: Int) -> Int {
      if number < 0 {
         return (-number)
      } else {
         return number
      }
   }
}

let no = Math.abs(number: -35)
let num = absno.abs(number: -5)

print(no)
print(num)

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