subscript
서브스크립트는 우리가 배열을 사용할 때 배열 속 원소에 접근하기 위해 사용하는 대괄호 []를 지칭한다.
□ 배열 서브스크립트 정의
→ index를 int타입으로 받고 Element를 반환한다.
□ 딕셔너리 서브스크립트 정의
→ key값을 input으로 받고 Value를 반환한다.
이를 이용해 서브스크립트를 입맛에 맞게 변형할 수 있다
서브스크립트 정의하기
subscript(index: Int) -> Int {
get {
}
set(newValue) {
}
}
→ subscript 키워드로 작성하고 1개 이상의 매개변수 값과 반환 값을 지정 (생략 불가)
→ getter 혼자 사용은 가능 하지만, setter는 혼자 사용이 불가능하다.
□ 배열 서브스크립트 사용해보기
let str = "Hello"
print(str[1])
extension String{
subscript(idx: Int) -> String?{
guard (0..<count).contains(idx) else{
return nil
}
let target = index(startIndex,offsetBy: idx)
return String(self[target])
}
}
→ extension 부분은 참고 사이트 1번에서 참조하였다.
→ 위 코드를 이용하여 원하는 문자열에 접근이 가능하다.
□ 서브 스크립트 구조체 사용해 보기
struct testSub1{
var arr1 = [1,2,3,4,5]
subscript(index: Int) -> Int{
get{
return arr1[index]
}
set{
arr1[index] = newValue
}
}
}
var sub1: testSub1 = .init()
sub1[0] //get 실행, 1
sub1[0] = 6 //set 실행, 6
sub1[0] //get 실행, 6
→ subscript의 setter, getter를 이용하여 배열에 값을 저장하고 출력하는 코드이다.
□ 타입 서브스크립트
struct testSub2{
static var arr2 = [1,2,3,4,5]
static var arr3 = ["a","b","c"]
static subscript(index: Int) -> Int{
get{
return arr2[index]
}
set{
arr2[index] = newValue
}
}
}
// arr2가 실행됨
testSub2[1] //2
testSub2[1] = 3 //3
testSub2[1] //3
testSub2.arr3[1] //"b"
→ static의 성질에 따라서 struct 이름으로 배열처럼 사용이 가능하다.
→ 위 예제처럼 이름으로 출력 시 첫 static 선언된 변수가 출력된다.
→ 그 외의 변수를 출력할 때는 직접 '.'을 이용하여 접근해야 함
#참고한 사이트
- https://babbab2.tistory.com/123
- https://velog.io/@cherrish_red/swift-Subscript-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0
'iOS > 문법' 카테고리의 다른 글
Swift 문법과 친해지기 - protocol (0) | 2023.01.04 |
---|---|
Swift 문법과 친해지기 - Type Casting 와 Any, AnyObject (0) | 2023.01.04 |
Swift 문법과 친해지기 - 고차함수 (map, filter, reduce) (0) | 2022.12.26 |
Swift 문법과 친해지기 - Set (0) | 2022.12.26 |
Swift 문법과 친해지기 - Dictionary (0) | 2022.12.26 |