신속한 방법
Swift 메소드는 특정 유형과 연관된 함수입니다.
Objective-C에서 클래스는 메소드를 정의할 수 있는 유일한 유형입니다. 하지만 Swift에서는 클래스/구조체/열거형 정의 여부를 선택할 수 있을 뿐만 아니라 생성하는 유형(클래스/구조체/열거형)에 대한 메서드를 유연하게 정의할 수도 있습니다.
인스턴스 메서드
Swift 언어에서 인스턴스 메서드는 특정 클래스, 구조 또는 열거형 유형의 인스턴스에 속하는 메서드입니다.
인스턴스 메서드는 다음과 같은 메서드를 제공합니다.
인스턴스 속성에 접근하고 수정할 수 있습니다.
인스턴스의 목적과 관련된 기능을 제공합니다.
인스턴스 메서드는 다음 중괄호({}) 안에 작성해야 합니다. 그 사이에 속하는 유형입니다.
인스턴스 메서드는 해당 유형의 다른 모든 인스턴스 메서드와 속성에 암시적으로 액세스할 수 있습니다.
인스턴스 메서드는 자신이 속한 클래스의 특정 인스턴스에서만 호출할 수 있습니다.
인스턴스 메서드는 기존 인스턴스와 독립적으로 호출할 수 없습니다.
Syntax
func funcname(Parameters) -> returntype { Statement1 Statement2 …… Statement N return parameters }
Instances
import Cocoa class Counter { var count = 0 func increment() { count++ } func incrementBy(amount: Int) { count += amount } func reset() { count = 0 } } // 初始计数值是0 let counter = Counter() // 计数值现在是1 counter.increment() // 计数值现在是6 counter.incrementBy(5) print(counter.count) // 计数值现在是0 counter.reset() print(counter.count)
위 프로그램의 실행 출력은 다음과 같습니다.
6 0
Counter 클래스는 세 가지 인스턴스 메서드를 정의합니다.
increment
는 카운터를 1씩 증가시킵니다.increment
让计数器按一递增;incrementBy(amount: Int)
让计数器按一个指定的整数值递增;reset
将计数器重置为0。
Counter
这个类还声明了一个可变属性count
incrementBy(amount: Int)
지정된 정수 값만큼 카운터를 증가시킵니다. reset
카운터를 0으로 재설정합니다.
Counter
이 클래스는 현재 카운터 값을 추적하는 데 사용되는 변경 가능한 속성 count
도 선언합니다.
다음 예에서는 'no1'이 로컬 매개변수 이름으로 선언됩니다.
import Cocoa class division { var count: Int = 0 func incrementBy(no1: Int, no2: Int) { count = no1 / no2 print(count) } } let counter = division() counter.incrementBy(1800, no2: 3) counter.incrementBy(1600, no2: 5) counter.incrementBy(11000, no2: 3)
위 프로그램 실행의 출력 결과는 다음과 같습니다.
600 320 3666
외부 이름 설정 제공 여부첫 번째 매개변수에 외부 이름을 강제로 추가하고 이 로컬 이름을 다음과 같이 사용합니다. 외부 이름(Swift 2.0 이전) # 기호 사용
반대로, 외부 이름을 제공하지 않고 밑줄(_)을 사용하여 두 번째 및 후속 매개변수를 설정할 수도 있습니다.
import Cocoa class multiplication { var count: Int = 0 func incrementBy(first no1: Int, no2: Int) { count = no1 * no2 print(count) } } let counter = multiplication() counter.incrementBy(first: 800, no2: 3) counter.incrementBy(first: 100, no2: 5) counter.incrementBy(first: 15000, no2: 3)
self 속성
.
각 유형의 인스턴스에는 self라는 암시적 속성이 있으며 이는 인스턴스 자체와 완전히 동일합니다. 🎜🎜이 암시적 self 속성을 인스턴스 메서드에서 사용하여 현재 인스턴스를 참조할 수 있습니다. 🎜위의 프로그램 실행 결과는 다음과 같습니다. 🎜2400 500 45000
인스턴스 메소드의 값 유형 수정
Swift 언어의 구조와 열거형은 값 유형입니다. 일반적으로 값 형식의 속성은 해당 인스턴스 메서드 내에서 수정할 수 없습니다.
그러나 특정 메서드에서 구조나 열거형의 속성을 수정해야 하는 경우 메서드를 변경하도록 선택할 수 있습니다. 그러면 메서드가 메서드 내에서 해당 속성을 변경할 수 있으며 변경 사항은 그대로 유지됩니다. 메서드가 끝나면 원래 구조로 유지됩니다.
메서드는 암시적 self 속성에 새 인스턴스를 할당할 수도 있습니다. 이 새 인스턴스는 메서드가 끝난 후 원래 인스턴스를 대체합니다.
import Cocoa 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("Self 内: \(res)") } func tot(c: Int) -> Int { return res - c } func result() { print("结果为: \(tot(20))") print("结果为: \(tot(50))") } } let pri = calculations(a: 600, b: 300) let sum = calculations(a: 1200, b: 300) pri.result() sum.result()
위 프로그램의 실행 출력은 다음과 같습니다.
Self 内: 900 Self 内: 1500 结果为: 880 结果为: 850 结果为: 1480 结果为: 1450
변수 메서드에서 self에 값 할당
가변 메서드는 암시적 속성 self에 새 인스턴스를 할당할 수 있습니다.
import Cocoa 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(3) val.scaleBy(30) val.scaleBy(300)
위 프로그램의 실행 결과는 다음과 같습니다.
9 15 270 450 81000 135000
Type 메소드
인스턴스 메소드는 유형 자체에서 호출되는 메소드를 정의할 수도 있습니다. 유형 방법.
구조체와 열거형의 유형 메소드를 선언하고 메소드의 func 키워드 앞에 static 키워드를 추가하세요. 클래스는 클래스라는 키워드를 사용하여 하위 클래스가 상위 클래스의 구현 메서드를 재정의할 수 있도록 할 수 있습니다.
Type 메서드는 인스턴스 메서드와 마찬가지로 점(.) 구문으로 호출됩니다.
import Cocoa 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(13)
위 프로그램 실행의 출력 결과는 다음과 같습니다.
39 65