티스토리 뷰

Swift

메서드(Methods) 정복하기 - 2장

swallow.iOS 2022. 7. 6. 01:26

안녕하세요! Swallow입니다!

이번 포스팅은

⭐️ 서브스크립트(Subscript) ⭐️

관한 글입니다!

항상 어떠한 조언, 충고 환영입니다!

시작하기에 앞서 이 글은

앨런 Swift 문법 마스터 스쿨 강의와 야곰님의 스위프트 프로그래밍 책

공부하고 참고하여 작성하였습니다!

그럼 시작하겠습니다!

 

 

서브스크립트(Subscript)란?

대괄호를 이용해서 접근이 가능하도록 만든 문법입니다!

보통의 메서드는 () 소괄호를 이용해서 메서드를 호출하는데,

서브스크립트는 [] 대괄호를 이용합니다!

함수와 기능은 똑같은데, 형태만 다르다고 생각하시면 됩니다!

클래스, 구조체, 열거형에서 사용이 가능하며,

일반적으로 배열, 딕셔너리에서 요소에 접근하기 위해서

사용이 됩니다!

 

 

배열과 딕셔너리에서 서브스크립트 사용 예시를 보실게요!

자주 사용하는

배열과 딕셔너리에서 서브스크립트를 이용해서

해당 요소에 접근을 한 예시입니다!

 

배열과 딕셔너리에서 사용하는 서브스크립트 말고

자신이 직접 서브스크립트를 구현할 수 있습니다!

 

서브스크립트의 정의 방법에 대해서 알아보겠습니다!

위의 예시를 설명을 드리자면

서브스크립트를 정의할 때는

func가 아닌

subscript 키워드로 구현을 합니다! 😁

 

그리고 예시에서 [String] 타입으로 apple이라는 배열을 만들었습니다!

 

apple배열을 이용해서 서브스크립트를 구현하는 예시입니다!

메서드이기 때문에 input과 output이 존재합니다❗️

 

그리고 서브스크립트의 형식을 보시면

계산 속성과 매우 유사하죠?

get / set이 존재하는데

get / set의 기능도 계산 속성과 똑같습니다!

계산 속성에 대해서 잘 모르신다면

여기를 눌러주세요! 😎

 

 

1. get블록

get블록에서 apple[index]를 리턴해주고 있습니다!

애초에 apple은 배열이기 때문에 서브스크립트를 사용이 가능한 것이고

서브스크립트로 들어오는 숫자를 파라미터로 받고 있습니다!

이런 식으로 말이죠!

item[0] <--- 이 부분이

위에서 정의한 서브스크립트의 파라미터 부분(index: Int)에

[0]이 들어가게 되면서, get블록에서 구현한

apple[index] <--- 부분에도 들어가게 되는 것입니다!

서브스크립트는 사용할 때, 파라미터가 생략되어서 실행이 됩니다!

그래서 위에서 정의한 (index: Int) 부분이

서브스크립트를 사용할 때는 생략이 되어서 나옵니다!

 

 

2. set블록

마찬가지로 apple은 배열이기 때문에 서브스크립트가 사용이 가능해서

apple[index] <--- 이 부분에

새롭게 받을 값을 넣어주는 예시입니다!

위의 예시처럼

새로운 값을 넣어줌으로써, set블록이 적용이 됩니다!

당연히 set블록에서 파라미터 이름을 생략하고

newValue로 대체할 수 있습니다!

이런 식으로 말이죠!

 

 

3. 타입 서브스크립트(Type Subscript)

타입 메서드 , 타입 속성과 마찬가지로

타입 서브스크립트가 존재합니다!

이전 글들을 보셨다면,

이제 타입 서브스크립트를 어떻게 정의하는지 다들 아실 겁니다!

열거형에서 타입 서브스크립트를 구현해 보았습니다!

예시를 설명해드리면

리턴 타입이 열거형인 Season타입입니다!

get블록만 구현을 한 상태이고

타입 서브스크립트의 파라미터로 전달받는 정수를

rawValue 함수의 파라미터로 전달하고 있습니다!

 

열거형을 배울 때

rawValue는 옵셔널 타입으로 반환을 해준다고 말씀드렸어요!

그래서!(강제 추출 연산자)를 통해서

언래핑을 한 예시입니다!

 

위의 예시를 실행해 볼까요?

타입 서브스크립트 이니까,

타입 이름으로 접근을 해야 합니다!

hot상수에 Season[2]를 넣어줌으로써,

hot에는 원시 값이 2인

case summer가 들어가게 되겠죠?

그래서 출력을 해보면!

summer가 출력이 됩니다!

 

서브스크립트 정리

1. 함수의 구현이 func가 아닌, subscript를 사용해야 합니다! 🔥

2. 파라미터 2개 이상도 구현 가능합니다! 🔥

예시에서는 다루지 않았습니다!

3. 아규먼트 레이블을 따로 사용하지 않습니다! 🔥

4. 계산 속성의 get / set과 유사합니다! 🔥

5. 메서드 이기 때문에 파라미터 생략이 불가능하고,

저장할 값의 타입도 명시해야 하기에 리턴 타입도 생략이 불가능합니다! 🔥

6. 함수와 기능은 똑같지만, 특별한 형태이면서

() 소괄호가 아닌, [] 대괄호를 사용합니다! 🔥

 

 

오늘 준비한 글은 여기까지 입니다!

다음에 작성할 글은

⭐️ 싱글톤 패턴 ⭐️

관한 글입니다!

 

감사합니다!

 

피드백 언제나 환영합니다!

댓글