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