클래스, 구조체 그리고 열거형에서 스크립트를 정의해 사용할 수 있습니다. 서브스크립트란 콜렉션, 리스트, 시퀀스 등 집합의 특정 멤버 엘리먼트에 간단하게 접근할 수 있는 문법입니다. 서브 스크립트를 이용하면 추가적인 메서드(Setter, Getter) 없이 특정 값을 할당(assign)하거나 가져올 수 (retrieve) 있습니다.

//서브스크립트 구현

struct Student {
		var name: String
		var number: Int
}

class School {
		var number: Int = 0
		var students: [Student] = [Student]()

		func addStudent(name: String) {
				let student: Student = Student(name: name, number: self.number)
				self.students.append(studen)
				self.number += 1
		}
		func addStudents(name: String) {
				for name in names {
						self.addStudent(name: name)
				}
		}

		subscript(index: Int) -> Student? {
				if index < self.number {
						return self.students[index]
				}
				return nil
		}
}

let highSchool: School = school()
highScool.addStudents(name: "mj", "jy", "su", "md")

let aStudent: Student? = highSchool[1]
print("\\(aStudent?.number) \\(aStudent?.name)")

서브스크립트 문법(Subscript Syntax)

서브스크립트 선언 문법은 인스턴스 메서드와 계산된 프로퍼티를 선언하는 것과 비슷합니다. 인스턴스 메서드와 다른 점은 서브스크립트는 읽고, 쓰기 혹은 읽기 전용만 가능하다는 것입니다.

정의는 계산된 프로퍼티 방식과 같이 setter, getter 방식을 따릅니다.