일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- javascript
- swift
- DBMS
- 리눅스
- CD
- MySQL
- jenkins
- 스프링부트
- 다이어리
- 네트워크
- Xcode
- JPA
- 오라클
- 데이터베이스
- sql
- AI
- 인공지능
- libasm
- 스프링
- 티스토리챌린지
- springboot
- 소켓
- CI
- 스프링부트 웹 소켓
- 오블완
- IOS
- 아이패드다이어리
- 42seoul
- 프로그래밍언어론
- Spring
- Today
- Total
Hi yoahn 개발블로그
[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
'프로그래밍 언어 > swift' 카테고리의 다른 글
[Swift] #9 Type Properties (0) | 2021.02.01 |
---|---|
[Swift] #8 오류처리 및 고차함수 (0) | 2021.01.22 |
[Swift] #7 다양한 표현 및 확장 5 (assert / guard / 프로토콜 / 익스텐션) (0) | 2021.01.21 |
[Swift] #6 다양한 표현 및 확장 4 (옵셔널체이닝/nil 병합/타입캐스팅) (0) | 2021.01.21 |
[Swift] #5 다양한 표현 및 확장 3 (상속 / 인스턴스 생성 / 소멸) (0) | 2021.01.20 |