[Swift] #10 Method (인스턴스 메소드, 타입 메소드)
1. Method
1 ) 인스턴스 메소드
- 특정 클래스, 구조체, 열거형의 인스턴스에 속하는 함수
- 인스턴스 프로퍼티의 접근 및 수정 방법을 제공 or 인스턴스 목적과 관련된 기능 제공
- 인스턴스 메소드는 자신이 속한 타입의 특정 인스턴스에서만 호출 가능
★ 인스턴스가 없으면 호출할 수 없다. ★
let counter = Counter()// count = 0 (기본값)
counter.increment()//count = 1
counter.increment(by: 5)//count = 6
counter.reset()//count = 0
2 ) 인스턴스 메소드 내부에서 값 타입 변수 (구조체, 열거형) 수정
★ 기본적으로 값 타입의 프로퍼티들은 해당 인스턴스 메소드 내에서 수정 불가
- 수정이 필요한 경우 해당 메소드에서 수정이 가능하도록 변경 가능
-> 메소드에서 프로퍼티가 변경되면 변경된 내용이 구조체에 반영됨
struct Point {
var x = 0.0, y = 0.0
mutating func moveBy(x deltaX: Double, y deltaY: Double) {
x += deltaX
y += deltaY
// or self = Point(x: x + deltaX, y: y + deltaY)
}
}
var somePoint = Point(x: 1.0, y: 1.0)
somePoint.moveBy(x: 2.0, y: 3.0)
열거형을 변경하는 방법은 암시적 self 파라미터로 동일한 열거형의 다른 케이스로 설정 가능
enum TriStateSwitch {
case off, low, high
mutating func next() {
switch self {
case .off:
self = .low
case .low:
self = .high
case .high:
self = .off
}
}
}
var ovenLight = TriStateSwitch.low
ovenLight.next() // ovenLight == .high
ovenLight.next() // ovenLight == .off
2. 타입 메소드
타입 자체에서 호출되는 메소드
static func typeMethod(){
}
- Swift 에서는 모든 클래스, 구조체, 열거형에 대해 타입 메소드 정의 가능
- 타입 메소드는 명시적으로 지원하는 타입으로 범위가 지정됨
- 타입 프로퍼티처럼 타입.타입메소드 형식으로 호출
class SomeClass {
static func otherTypeMethod(){
//code
}
class func someTypeMethod() {
// code
}
}
SomeClass.someTypeMethod()
SomeClass.otherTypeMethod()
class Child:SomeClass{
override static func someTypeMethod(){
// code
}
}
타입 메소드의 본문 내에서 암시적인 self 프로퍼티는 해당 타입의 인스턴스가 아니라 타입 자체를 참조
1. 보다 일반적으로, 타입 메소드의 본문 내에서 사용되는 규정되지않는 메소드 및 프로퍼티 이름은 다른 타입-수준(type-level)메소드 및 프로퍼티를 참조합니다.
2. 타입 메소드는 타입 이름앞에 접두어를 붙일 필요 없이 다른 메소드의 이름으로 다른 타입 메소드를 호출 할 수 있습니다.
3. 비슷하게, 구조체와 열거형의 타입메소드는 타입 이름 접두사 없이 프로퍼티 이름을 사용하여 타입 프로퍼티에 접근할 수 있습니다.
1 > 이 부분은 이해가 안된다...
2 > 이것도 이해가 안된다
도대체 다른 메소드의 이름으로 다른 타입 메소드 호출한다는게 가능한 것인가...
써본적도 본적도 없는것 같아서 물음표 가득???????
-> 아마 그냥 다른 타입메소드를 타입이름으로 호출한다는게 아닌가...
3 > 열거형은 타입이름 접두사 없이
enum Day { case mon }
var day = .mon
이런식으로 사용 가능한데 같은 방식으로 쓰는건가
mutating
Swift ) Method
프로토콜...글 쓰다가.. 급하게 Method(메소드) 글을 쓰게 됐네요 :)..... 중간에 mutating내용이 나오는데, 그 내용이 Method챕터에 잘 설명이 되어있거든요 :) 역시나 의 내용을 알아볼거에요 :) 시작할
zeddios.tistory.com
minsone.github.io/mac/ios/swift-properties-summary
[Swift]Properties 정리
속성(Properties) 속성은 특정 클래스, 구조체나 열거형을 값과 연결함. 저정 속성은 인스턴스의 부분으로서 상수와 변수를 저장하며, 어디서나 계산 속성은 값을 저장하는 것 보다 결정함. 계산속
minsone.github.io