SlideShare a Scribd company logo
1 of 10
Download to read offline
SWIFT
Subscripts
Bill Kim(김정훈) | ibillkim@gmail.com
목차
•Subscripts
•Subscript Syntax
•Subscript Usage
•Subscript Options
•References
Subscripts
Subscripts : 콜렉션, 리스트, 시퀀스 등 집합의 특정 멤버 엘리먼
트에 간단하게 접근할 수 있도록 해주는 문법
서브스크립트를 이용하면 간편하게 추가적인 메소드 없이 특정 값
을 할당하거나 가져올 수 있게된다.
즉 내가 원하는 값을 쉽게 찾기 위해 정의하는 문법을 서브스크립트
(예 : array[1] 과 같이, array에도 이미 내부에 서브스크립트가 구
현되어 있음)
Subscript Syntax
기본적인 서브스크립트 문법은 아래 코드와 같이 subscript 지시어
와 함께 get, set을 정의하여 사용할 수 있습니다.
struct TimesTable {
let multiplier: Int
subscript(index: Int) -> Int {
set(value){ // 생략 가능하며 newValue로 전달인자를 사용할 수 있습니다.
print(value)
}
get{
return index*3
}
}
}
var threeTimesTable = TimesTable(multiplier: 3)
print("six times three is (threeTimesTable[6])")
// "six times three is 18" 출력, 자동적으로 get을 통하여 6번째 엘리먼트 값을 3배로 하여 가져온다.
threeTimesTable[2] = 1 // 2번째 엘리먼트 값을 1로 설정(set)
Subscript Usage
// numberOfLegs값은 타입 추론에 의해 [String: Int]형을 갖는다.
var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
numberOfLegs["bird"] = 2
print(numberOfLegs["ant"]!) // 6, Forced Unwrapping으로 실제 값을 출력하도록 한다.
class MovieList { // 영화 리스트 클래스.
private var tracks = ["The Godfather", "The Dark Night", "Superman"]
subscript(index: Int) -> String {
get {
return self.tracks[index]
}
set{
self.tracks[index] = newValue
}
}
}
var movieList = MovieList() // 클래스 인스턴스 만들고
print("영화 리스트에서 두 번째 영화는 (movieList[1])") // The Dark Night 출력됨.
Subscript Options
서브스크립트는 아래의 옵션 사항을 제공합니다.
- 입력 인자는 어떠한 값이든 취할 수 있음
- 입력 인자는 어떤 타입이든 가능함
- 서브스크립트는 어떠한 타입도 반환 가능
- 변수 인자와 가변 인자 사용이 가능
- in-out 인자는 사용할 수 없음(주소값 파라미터 사용 안됨)
- 적합하고 추론 가능한 경우 다중 인자를 사용할 수 있음
Subscript Options
서브스크립트 다중 인자 예시
struct Matrix {
let rows: Int, columns: Int
var grid: [Double]
init(rows: Int, columns: Int) {
self.rows = rows
self.columns = columns
grid = Array(repeating: 0.0, count: rows * columns)
}
func indexIsValidForRow(row: Int, column: Int) -> Bool {
return row >= 0 && row < rows && column >= 0 && column < columns
}
subscript(row: Int, column: Int) -> Double {
get {
assert(indexIsValidForRow(row: row, column: column), "Index out of range")
return grid[(row * columns) + column]
}
set {
assert(indexIsValidForRow(row: row, column: column), "Index out of range")
grid[(row * columns) + column] = newValue
}
}
}
var matrix = Matrix(rows: 2, columns: 2)
matrix[0, 1] = 1.5
matrix[1, 0] = 3.2
print(matrix[0, 1])
print(matrix[1, 0])
print(matrix[2, 2]) // Assetion!!! 서브스크립트 접근이 행렬을 벗어날 경우 assert를 발생함
References
[1] [스위프트 : 기초] 서브스크립트 : https://the-brain-of-
sic2.tistory.com/37
[2] [Swift]Subscripts 정리 : http://minsone.github.io/
mac/ios/swift-subscripts-summary
[3] Swift - 서브스크립트 : https://penguin-
story.tistory.com/40
[4] Swift4 subscript(서브스크립트) : http://
blog.naver.com/PostView.nhn?
blogId=hjleesm&logNo=221349109702
[5] 서브스크립트(Subscripts) : https://kka7.tistory.com/
118
References
[6] [Swift 3] 서브스크립트 (Subscript) : https://
beankhan.tistory.com/163
[7] 서브스크립트 (Subscripts) : https://jusung.gitbook.io/
the-swift-language-guide/language-guide/12-subscripts
[8] Swift - 서브스크립트(Subscripts) : http://
seorenn.blogspot.com/2014/06/swift-subscripts.html
[9] [Swift] 서브스크립트(Subscript) : https://
jinnify.tistory.com/37
[10] [swift] Subscript : https://zetal.tistory.com/entry/
swift-기초문법-18-서브스크립트Subscript
Thank you!

More Related Content

What's hot

[Swift] Tuple
[Swift] Tuple[Swift] Tuple
[Swift] TupleBill Kim
 
Haskell study 15
Haskell study 15Haskell study 15
Haskell study 15Nam Hyeonuk
 
Haskell study 13
Haskell study 13Haskell study 13
Haskell study 13Nam Hyeonuk
 
Haskell study 12
Haskell study 12Haskell study 12
Haskell study 12Nam Hyeonuk
 
Haskell study 14
Haskell study 14Haskell study 14
Haskell study 14Nam Hyeonuk
 
Stl vector, list, map
Stl vector, list, mapStl vector, list, map
Stl vector, list, mapNam Hyeonuk
 
Hash table
Hash tableHash table
Hash tableSeoYeong
 
타임리프 폼과 어노테이션.Key
타임리프 폼과 어노테이션.Key타임리프 폼과 어노테이션.Key
타임리프 폼과 어노테이션.KeySeokju Hong
 
C# 세미나 12회차
C# 세미나 12회차C# 세미나 12회차
C# 세미나 12회차Jeung_mh
 
프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기Jongwook Choi
 
Haskell study 10
Haskell study 10Haskell study 10
Haskell study 10Nam Hyeonuk
 
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용 [GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용 Sehyeon Nam
 
Scala스터디 - 배열사용하기
Scala스터디 - 배열사용하기Scala스터디 - 배열사용하기
Scala스터디 - 배열사용하기창규 김
 
[Swift] Data Structure - Binary Tree
[Swift] Data Structure - Binary Tree[Swift] Data Structure - Binary Tree
[Swift] Data Structure - Binary TreeBill Kim
 
C++ Template/STL study
C++ Template/STL studyC++ Template/STL study
C++ Template/STL studySeo Dong-yu
 

What's hot (20)

Haskell study 4
Haskell study 4Haskell study 4
Haskell study 4
 
Haskell study 8
Haskell study 8Haskell study 8
Haskell study 8
 
[Swift] Tuple
[Swift] Tuple[Swift] Tuple
[Swift] Tuple
 
Haskell study 15
Haskell study 15Haskell study 15
Haskell study 15
 
Haskell study 5
Haskell study 5Haskell study 5
Haskell study 5
 
Haskell study 13
Haskell study 13Haskell study 13
Haskell study 13
 
Haskell study 12
Haskell study 12Haskell study 12
Haskell study 12
 
Haskell study 14
Haskell study 14Haskell study 14
Haskell study 14
 
Swift 0x17 generics
Swift 0x17 genericsSwift 0x17 generics
Swift 0x17 generics
 
Stl vector, list, map
Stl vector, list, mapStl vector, list, map
Stl vector, list, map
 
3 swift 컬렉션
3 swift 컬렉션3 swift 컬렉션
3 swift 컬렉션
 
Hash table
Hash tableHash table
Hash table
 
타임리프 폼과 어노테이션.Key
타임리프 폼과 어노테이션.Key타임리프 폼과 어노테이션.Key
타임리프 폼과 어노테이션.Key
 
C# 세미나 12회차
C# 세미나 12회차C# 세미나 12회차
C# 세미나 12회차
 
프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기
 
Haskell study 10
Haskell study 10Haskell study 10
Haskell study 10
 
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용 [GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
 
Scala스터디 - 배열사용하기
Scala스터디 - 배열사용하기Scala스터디 - 배열사용하기
Scala스터디 - 배열사용하기
 
[Swift] Data Structure - Binary Tree
[Swift] Data Structure - Binary Tree[Swift] Data Structure - Binary Tree
[Swift] Data Structure - Binary Tree
 
C++ Template/STL study
C++ Template/STL studyC++ Template/STL study
C++ Template/STL study
 

Similar to [Swift] Subscripts

나에 첫번째 자바8 람다식 지앤선
나에 첫번째 자바8 람다식   지앤선나에 첫번째 자바8 람다식   지앤선
나에 첫번째 자바8 람다식 지앤선daewon jeong
 
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)JiandSon
 
자바로 배우는 자료구조
자바로 배우는 자료구조자바로 배우는 자료구조
자바로 배우는 자료구조중선 곽
 
Swift3 subscript inheritance initialization
Swift3 subscript inheritance initializationSwift3 subscript inheritance initialization
Swift3 subscript inheritance initializationEunjoo Im
 
R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작Terry Cho
 
Java advancd ed10
Java advancd ed10Java advancd ed10
Java advancd ed10hungrok
 
Java_02 변수자료형
Java_02 변수자료형Java_02 변수자료형
Java_02 변수자료형Hong Hyo Sang
 
Java 변수자료형
Java 변수자료형Java 변수자료형
Java 변수자료형Hyosang Hong
 
[Swift] Data Structure - Array
[Swift] Data Structure - Array[Swift] Data Structure - Array
[Swift] Data Structure - ArrayBill Kim
 
R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1happychallenge
 
5장 객체와클래스
5장 객체와클래스5장 객체와클래스
5장 객체와클래스SeoYeong
 
파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130Yong Joon Moon
 
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)Tae Young Lee
 
[Swift] Data Structure - Queue
[Swift] Data Structure - Queue[Swift] Data Structure - Queue
[Swift] Data Structure - QueueBill Kim
 
Swift3 generic
Swift3 genericSwift3 generic
Swift3 genericEunjoo Im
 
읽기 좋은 코드가 좋은 코드다 Part one
읽기 좋은 코드가 좋은 코드다   Part one읽기 좋은 코드가 좋은 코드다   Part one
읽기 좋은 코드가 좋은 코드다 Part oneJi Hun Kim
 

Similar to [Swift] Subscripts (20)

나에 첫번째 자바8 람다식 지앤선
나에 첫번째 자바8 람다식   지앤선나에 첫번째 자바8 람다식   지앤선
나에 첫번째 자바8 람다식 지앤선
 
Java stream v0.1
Java stream v0.1Java stream v0.1
Java stream v0.1
 
Java stream v0.1
Java stream v0.1Java stream v0.1
Java stream v0.1
 
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
 
강의자료3
강의자료3강의자료3
강의자료3
 
자바로 배우는 자료구조
자바로 배우는 자료구조자바로 배우는 자료구조
자바로 배우는 자료구조
 
Swift3 subscript inheritance initialization
Swift3 subscript inheritance initializationSwift3 subscript inheritance initialization
Swift3 subscript inheritance initialization
 
R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작
 
Java advancd ed10
Java advancd ed10Java advancd ed10
Java advancd ed10
 
Java_02 변수자료형
Java_02 변수자료형Java_02 변수자료형
Java_02 변수자료형
 
Java 변수자료형
Java 변수자료형Java 변수자료형
Java 변수자료형
 
iOS-3
iOS-3iOS-3
iOS-3
 
[Swift] Data Structure - Array
[Swift] Data Structure - Array[Swift] Data Structure - Array
[Swift] Data Structure - Array
 
R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1
 
5장 객체와클래스
5장 객체와클래스5장 객체와클래스
5장 객체와클래스
 
파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130
 
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
 
[Swift] Data Structure - Queue
[Swift] Data Structure - Queue[Swift] Data Structure - Queue
[Swift] Data Structure - Queue
 
Swift3 generic
Swift3 genericSwift3 generic
Swift3 generic
 
읽기 좋은 코드가 좋은 코드다 Part one
읽기 좋은 코드가 좋은 코드다   Part one읽기 좋은 코드가 좋은 코드다   Part one
읽기 좋은 코드가 좋은 코드다 Part one
 

More from Bill Kim

[Algorithm] Sorting Comparison
[Algorithm] Sorting Comparison[Algorithm] Sorting Comparison
[Algorithm] Sorting ComparisonBill Kim
 
[Algorithm] Big O Notation
[Algorithm] Big O Notation[Algorithm] Big O Notation
[Algorithm] Big O NotationBill Kim
 
[Algorithm] Shell Sort
[Algorithm] Shell Sort[Algorithm] Shell Sort
[Algorithm] Shell SortBill Kim
 
[Algorithm] Radix Sort
[Algorithm] Radix Sort[Algorithm] Radix Sort
[Algorithm] Radix SortBill Kim
 
[Algorithm] Quick Sort
[Algorithm] Quick Sort[Algorithm] Quick Sort
[Algorithm] Quick SortBill Kim
 
[Algorithm] Heap Sort
[Algorithm] Heap Sort[Algorithm] Heap Sort
[Algorithm] Heap SortBill Kim
 
[Algorithm] Counting Sort
[Algorithm] Counting Sort[Algorithm] Counting Sort
[Algorithm] Counting SortBill Kim
 
[Algorithm] Selection Sort
[Algorithm] Selection Sort[Algorithm] Selection Sort
[Algorithm] Selection SortBill Kim
 
[Algorithm] Merge Sort
[Algorithm] Merge Sort[Algorithm] Merge Sort
[Algorithm] Merge SortBill Kim
 
[Algorithm] Insertion Sort
[Algorithm] Insertion Sort[Algorithm] Insertion Sort
[Algorithm] Insertion SortBill Kim
 
[Algorithm] Bubble Sort
[Algorithm] Bubble Sort[Algorithm] Bubble Sort
[Algorithm] Bubble SortBill Kim
 
[Algorithm] Binary Search
[Algorithm] Binary Search[Algorithm] Binary Search
[Algorithm] Binary SearchBill Kim
 
[Algorithm] Recursive(재귀)
[Algorithm] Recursive(재귀)[Algorithm] Recursive(재귀)
[Algorithm] Recursive(재귀)Bill Kim
 
[Swift] Data Structure - AVL
[Swift] Data Structure - AVL[Swift] Data Structure - AVL
[Swift] Data Structure - AVLBill Kim
 
[Swift] Data Structure - Binary Search Tree
[Swift] Data Structure - Binary Search Tree[Swift] Data Structure - Binary Search Tree
[Swift] Data Structure - Binary Search TreeBill Kim
 
[Swift] Data Structure - Graph(BFS)
[Swift] Data Structure - Graph(BFS)[Swift] Data Structure - Graph(BFS)
[Swift] Data Structure - Graph(BFS)Bill Kim
 
[Swift] Data Structure - Graph(DFS)
[Swift] Data Structure - Graph(DFS)[Swift] Data Structure - Graph(DFS)
[Swift] Data Structure - Graph(DFS)Bill Kim
 
[Swift] Data Structure - Tree
[Swift] Data Structure - Tree[Swift] Data Structure - Tree
[Swift] Data Structure - TreeBill Kim
 
[Swift] Data Structure - Graph
[Swift] Data Structure - Graph[Swift] Data Structure - Graph
[Swift] Data Structure - GraphBill Kim
 
[Swift] Data Structure - Heap
[Swift] Data Structure - Heap[Swift] Data Structure - Heap
[Swift] Data Structure - HeapBill Kim
 

More from Bill Kim (20)

[Algorithm] Sorting Comparison
[Algorithm] Sorting Comparison[Algorithm] Sorting Comparison
[Algorithm] Sorting Comparison
 
[Algorithm] Big O Notation
[Algorithm] Big O Notation[Algorithm] Big O Notation
[Algorithm] Big O Notation
 
[Algorithm] Shell Sort
[Algorithm] Shell Sort[Algorithm] Shell Sort
[Algorithm] Shell Sort
 
[Algorithm] Radix Sort
[Algorithm] Radix Sort[Algorithm] Radix Sort
[Algorithm] Radix Sort
 
[Algorithm] Quick Sort
[Algorithm] Quick Sort[Algorithm] Quick Sort
[Algorithm] Quick Sort
 
[Algorithm] Heap Sort
[Algorithm] Heap Sort[Algorithm] Heap Sort
[Algorithm] Heap Sort
 
[Algorithm] Counting Sort
[Algorithm] Counting Sort[Algorithm] Counting Sort
[Algorithm] Counting Sort
 
[Algorithm] Selection Sort
[Algorithm] Selection Sort[Algorithm] Selection Sort
[Algorithm] Selection Sort
 
[Algorithm] Merge Sort
[Algorithm] Merge Sort[Algorithm] Merge Sort
[Algorithm] Merge Sort
 
[Algorithm] Insertion Sort
[Algorithm] Insertion Sort[Algorithm] Insertion Sort
[Algorithm] Insertion Sort
 
[Algorithm] Bubble Sort
[Algorithm] Bubble Sort[Algorithm] Bubble Sort
[Algorithm] Bubble Sort
 
[Algorithm] Binary Search
[Algorithm] Binary Search[Algorithm] Binary Search
[Algorithm] Binary Search
 
[Algorithm] Recursive(재귀)
[Algorithm] Recursive(재귀)[Algorithm] Recursive(재귀)
[Algorithm] Recursive(재귀)
 
[Swift] Data Structure - AVL
[Swift] Data Structure - AVL[Swift] Data Structure - AVL
[Swift] Data Structure - AVL
 
[Swift] Data Structure - Binary Search Tree
[Swift] Data Structure - Binary Search Tree[Swift] Data Structure - Binary Search Tree
[Swift] Data Structure - Binary Search Tree
 
[Swift] Data Structure - Graph(BFS)
[Swift] Data Structure - Graph(BFS)[Swift] Data Structure - Graph(BFS)
[Swift] Data Structure - Graph(BFS)
 
[Swift] Data Structure - Graph(DFS)
[Swift] Data Structure - Graph(DFS)[Swift] Data Structure - Graph(DFS)
[Swift] Data Structure - Graph(DFS)
 
[Swift] Data Structure - Tree
[Swift] Data Structure - Tree[Swift] Data Structure - Tree
[Swift] Data Structure - Tree
 
[Swift] Data Structure - Graph
[Swift] Data Structure - Graph[Swift] Data Structure - Graph
[Swift] Data Structure - Graph
 
[Swift] Data Structure - Heap
[Swift] Data Structure - Heap[Swift] Data Structure - Heap
[Swift] Data Structure - Heap
 

[Swift] Subscripts

  • 3. Subscripts Subscripts : 콜렉션, 리스트, 시퀀스 등 집합의 특정 멤버 엘리먼 트에 간단하게 접근할 수 있도록 해주는 문법 서브스크립트를 이용하면 간편하게 추가적인 메소드 없이 특정 값 을 할당하거나 가져올 수 있게된다. 즉 내가 원하는 값을 쉽게 찾기 위해 정의하는 문법을 서브스크립트 (예 : array[1] 과 같이, array에도 이미 내부에 서브스크립트가 구 현되어 있음)
  • 4. Subscript Syntax 기본적인 서브스크립트 문법은 아래 코드와 같이 subscript 지시어 와 함께 get, set을 정의하여 사용할 수 있습니다. struct TimesTable { let multiplier: Int subscript(index: Int) -> Int { set(value){ // 생략 가능하며 newValue로 전달인자를 사용할 수 있습니다. print(value) } get{ return index*3 } } } var threeTimesTable = TimesTable(multiplier: 3) print("six times three is (threeTimesTable[6])") // "six times three is 18" 출력, 자동적으로 get을 통하여 6번째 엘리먼트 값을 3배로 하여 가져온다. threeTimesTable[2] = 1 // 2번째 엘리먼트 값을 1로 설정(set)
  • 5. Subscript Usage // numberOfLegs값은 타입 추론에 의해 [String: Int]형을 갖는다. var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4] numberOfLegs["bird"] = 2 print(numberOfLegs["ant"]!) // 6, Forced Unwrapping으로 실제 값을 출력하도록 한다. class MovieList { // 영화 리스트 클래스. private var tracks = ["The Godfather", "The Dark Night", "Superman"] subscript(index: Int) -> String { get { return self.tracks[index] } set{ self.tracks[index] = newValue } } } var movieList = MovieList() // 클래스 인스턴스 만들고 print("영화 리스트에서 두 번째 영화는 (movieList[1])") // The Dark Night 출력됨.
  • 6. Subscript Options 서브스크립트는 아래의 옵션 사항을 제공합니다. - 입력 인자는 어떠한 값이든 취할 수 있음 - 입력 인자는 어떤 타입이든 가능함 - 서브스크립트는 어떠한 타입도 반환 가능 - 변수 인자와 가변 인자 사용이 가능 - in-out 인자는 사용할 수 없음(주소값 파라미터 사용 안됨) - 적합하고 추론 가능한 경우 다중 인자를 사용할 수 있음
  • 7. Subscript Options 서브스크립트 다중 인자 예시 struct Matrix { let rows: Int, columns: Int var grid: [Double] init(rows: Int, columns: Int) { self.rows = rows self.columns = columns grid = Array(repeating: 0.0, count: rows * columns) } func indexIsValidForRow(row: Int, column: Int) -> Bool { return row >= 0 && row < rows && column >= 0 && column < columns } subscript(row: Int, column: Int) -> Double { get { assert(indexIsValidForRow(row: row, column: column), "Index out of range") return grid[(row * columns) + column] } set { assert(indexIsValidForRow(row: row, column: column), "Index out of range") grid[(row * columns) + column] = newValue } } } var matrix = Matrix(rows: 2, columns: 2) matrix[0, 1] = 1.5 matrix[1, 0] = 3.2 print(matrix[0, 1]) print(matrix[1, 0]) print(matrix[2, 2]) // Assetion!!! 서브스크립트 접근이 행렬을 벗어날 경우 assert를 발생함
  • 8. References [1] [스위프트 : 기초] 서브스크립트 : https://the-brain-of- sic2.tistory.com/37 [2] [Swift]Subscripts 정리 : http://minsone.github.io/ mac/ios/swift-subscripts-summary [3] Swift - 서브스크립트 : https://penguin- story.tistory.com/40 [4] Swift4 subscript(서브스크립트) : http:// blog.naver.com/PostView.nhn? blogId=hjleesm&logNo=221349109702 [5] 서브스크립트(Subscripts) : https://kka7.tistory.com/ 118
  • 9. References [6] [Swift 3] 서브스크립트 (Subscript) : https:// beankhan.tistory.com/163 [7] 서브스크립트 (Subscripts) : https://jusung.gitbook.io/ the-swift-language-guide/language-guide/12-subscripts [8] Swift - 서브스크립트(Subscripts) : http:// seorenn.blogspot.com/2014/06/swift-subscripts.html [9] [Swift] 서브스크립트(Subscript) : https:// jinnify.tistory.com/37 [10] [swift] Subscript : https://zetal.tistory.com/entry/ swift-기초문법-18-서브스크립트Subscript