Swift-방법

Swift 4 언어에서는 특정 유형과 관련된 함수를 메소드라고합니다. Objective C에서 클래스는 메서드를 정의하는 데 사용되는 반면 Swift 4 언어는 클래스, 구조 및 열거에 대한 메서드를 가질 수있는 사용자 유연성을 제공합니다.

인스턴스 방법

Swift 4 언어에서 Classes, Structures 및 Enumeration 인스턴스는 인스턴스 메서드를 통해 액세스됩니다.

인스턴스 메서드는 기능을 제공합니다.

  • 인스턴스 속성에 액세스하고 수정하려면
  • 인스턴스의 필요와 관련된 기능

인스턴스 메소드는 {} 중괄호 안에 작성할 수 있습니다. 유형 인스턴스의 메서드 및 속성에 대한 암시 적 액세스 권한이 있습니다. 유형의 특정 인스턴스가 호출되면 해당 특정 인스턴스에 액세스 할 수 있습니다.

통사론

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

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()

Playground를 사용하여 위의 프로그램을 실행하면 다음과 같은 결과를 얻습니다.

Result is: 880
Result is: 850

클래스 계산은 두 가지 인스턴스 메서드를 정의합니다-

  • init ()는 두 개의 숫자 a와 b를 더하고 결과 'res'에 저장하도록 정의됩니다.
  • tot ()는 'c'값 전달에서 'res'를 빼는 데 사용됩니다.

마지막으로 a와 b에 대한 값으로 계산 방법을 인쇄하기 위해 호출됩니다. 인스턴스 메소드는 '.'로 액세스됩니다. 도트 구문

로컬 및 외부 매개 변수 이름

Swift 4 Functions는 변수에 대한 지역 및 전역 선언을 모두 설명합니다. 마찬가지로 Swift 4 Methods 명명 규칙도 Objective C의 명명 규칙과 비슷합니다. 그러나 로컬 및 전역 매개 변수 이름 선언의 특성은 함수와 메서드에 따라 다릅니다. Swift 4의 첫 번째 매개 변수는 명명 규칙에 쉽게 액세스 할 수 있도록 'with', 'for'및 'by'로 전치사 이름으로 참조됩니다.

Swift 4는 첫 번째 매개 변수 이름을 로컬 매개 변수 이름으로 선언하고 나머지 매개 변수 이름을 전역 매개 변수 이름으로 선언함으로써 메소드의 유연성을 제공합니다. 여기서 'no1'은 Swift 4 메소드에 의해 로컬 매개 변수 이름으로 선언됩니다. 'no2'는 전역 선언에 사용되며 프로그램을 통해 액세스됩니다.

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)

Playground를 사용하여 위의 프로그램을 실행하면 다음과 같은 결과를 얻습니다.

600
320
3666

# 및 _ 기호가있는 외부 매개 변수 이름

Swift 4 메소드가 로컬 선언에 대한 첫 번째 매개 변수 이름을 제공하더라도 사용자는 매개 변수 이름을 로컬에서 전역 선언으로 수정할 수 있습니다. 첫 번째 매개 변수 이름 앞에 '#'기호를 붙이면됩니다. 이렇게하면 모듈 전체에서 첫 번째 매개 변수에 전역 적으로 액세스 할 수 있습니다.

사용자가 외부 이름으로 후속 매개 변수 이름에 액세스해야하는 경우 '_'기호를 사용하여 메소드 이름이 대체됩니다.

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)

Playground를 사용하여 위의 프로그램을 실행하면 다음과 같은 결과를 얻습니다.

2400
500
45000

방법의 자기 재산

메서드에는 정의 된 모든 형식 인스턴스에 대해 'self'라는 암시 적 속성이 있습니다. 'Self'속성은 정의 된 메서드의 현재 인스턴스를 참조하는 데 사용됩니다.

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()

Playground를 사용하여 위의 프로그램을 실행하면 다음과 같은 결과를 얻습니다.

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'속성에 의해 암시 적 함수에 대한 새 인스턴스가 생성되고 실행 후 기존 메서드를 대체합니다.

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)

Playground를 사용하여 위의 프로그램을 실행하면 다음과 같은 결과를 얻습니다.

9
15
270
450
81000
135000

변이 방법에 대한 자기 속성

'self'속성과 결합 된 변형 메서드는 정의 된 메서드에 새 인스턴스를 할당합니다.

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 메서드로 호출됩니다. 그리고 메소드가 특정 유형의 메소드를 호출하면 '유형 메소드'라고합니다. 'classes'에 대한 유형 메소드는 'func'키워드로 정의되며 구조 및 열거 유형 메소드는 'func'키워드 앞에 'static'키워드로 정의됩니다.

형식 메서드는 '.'에 의해 호출되고 액세스됩니다. 특정 인스턴스를 호출하는 대신 전체 메서드가 호출되는 구문입니다.

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)

플레이 그라운드를 이용하여 위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다. −

35
5