728x90
Method and Subscript 사용법 & 예제 [2/2]
Subscript란?
- 클래스, 구조 그리고 열거형은 서브스크립트를 정의할 수 있는데 컬렉션, 리스트 또는 순열의 멤버 항목에 접근하기 위한 단축키임. 서브스크립트를 사용하여 설정과 검색을 위해 메소드를 나눌 필요 없이 인덱스로 값을 설정하고 검색함. 예를 들어 someArray[index]로 배열 인스턴스 항목과 someDictionary[key]로 딕셔너리 인스턴스 항목을 접근할 수 있음.
< 특징 >
- 파라미터의 형식과 수에는 제한이 없으나 많아야 2개가 일반적
- 가변 파라미터 가능, 파라미터의 기본값 지정 불가능
- 값을 받아야 하기 때문에 리턴형 생략 불가능
- get은 필수, set은 생략 가능
subscript(parameters) -> ReturnType {
get {
return expression
}
set(name) {
statements
}
}
instance[index]
instance[key]
instance[range]
사용 예제
단일 파라미터
class List {
var data = [1,2,3]
subscript(i index : Int) -> Int { //접근할 값이 int -> return int
get {
return data[index]
}
set {
data[index] = newValue //기본제공 newValue
}
}
}
var l = List()
//서브스크립트에서 argument label 사용하는 경우는 1. 두 개 이상의 파라미터 들어가거나 2.가독성을 높여주고싶을때 제한적으로 사용 함
l[i: 0]
l[i: 1] = 123 //123으로 수정됨
//l[0, 1] // Error
//l["A"] //Error
두개의 파라미터
struct Matrix {
var data = [[1,2,3],
[4,5,6],
[7,8,9]]
//set 생략 , get 생략 -> 읽기전용
subscript(row: Int, col: Int) -> Int {
return data[row][col]
}
}
let m = Matrix()
m[0, 0] //2개 이상의 값 전달할때는 ,로 전달
//m[0, 10] Error
출처 : 어서와! Swift는 처음이지?(Programmers)
728x90
'Language > Swift' 카테고리의 다른 글
[Swift] 문법 최적화(Syntax Optimization)_Closures 사용법 & 예제 (0) | 2020.09.18 |
---|---|
[Swift] Clousure(클로저) 사용법 & 예제 (0) | 2020.09.14 |
[Swift] Method and Subscript 사용법 & 예제 [1/2] (0) | 2020.09.11 |
[Swift] Mutating Keyword 사용법 & 예제 (0) | 2020.09.09 |
[Swift] Initializers (초기화) 사용법 & 예제 [2/2] (0) | 2020.09.08 |