[Swift] Method and Subscript 사용법 & 예제 [2/2]

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

댓글

Designed by JB FACTORY