서브스크립트

- 클래스, 구조체, 열거형에는 컬렉션, 리스트, 시퀀스 등에서 접근할 수 있는 서브스크립트를 정의할 수 있다

- 별도의 설정자, 접근자 등의 메서드를 구현하지 않아도 인덱스를 통해 값을 설정하거나 가져올 수 있다

ex) Dictionary에서 dictionary[key] -> 이것이 서브스크립트 다

 

문법

subscript(index: Int) -> Int{
	get{
    	//getter
    }
    set(newValue){
    	//setter
    }
}

 

구현

struct Student{
	//...
}

class School{
	var students: [Student] = []
    
    func addStudent()...
    ...
    
    //School Class 내부에 있는 값들 혹은 그 값들의 조합으로도 반환 가능
    subscript(index: Int) -> Student?{
    	if index < self.number{
        	return self.students[index]
        }
        return nil
    }
}

 

복수개의 서브스크립트

- 하나의 타입이 여러개의 서브스크립트를 가징 수 있다

- 매개변수 타입과 개수, 반환 타입이 다르면 가능하다

- 서브스크립트에도 다형성이 가능

 

타입 서브스크립트

- subscript 앞에 static/class 키워드를 붙여준다

 

 

+ Recent posts