stride는 시작값(from)에서부터 끝값을 포함(through)하거나, 미포함(to)할 때까지 지정한 양(by)만큼 늘어나는 시퀸스를 반환하는 제네릭 함수입니다. // stride(from:to:by)는 to를 포함하지 않음 for i in stride(from: 0, to: 5, by: 1) { print(i) // 0, 1, 2, 3, 4 } // stride(from:through:by)는 through를 포함 for i in stride(from: 0, through: 5, by: 1) { print(i) // 0, 1, 2, 3, 4, 5 }
Swift 5.0부터 도입된 Result타입에 대해 정리해봅니다. Result타입은 실패가 가능한 작업을 할 때 기존에 성공시 원하는 데이터를, error발생시 Error를 throw하는 문법 대신에 Result타입을 던지도록 되어 있는 문법입니다. 이걸 도입한 이유는 기존에 error를 처리하던 throw방식에 몇가지 문제가 있었기 때문입니다. 기존 throw, do, try, catch 문법 Result타입을 보기 전에 먼저 기존의 throw문법을 보겠습니다. 아몬드를 주문하는 예제입니다. enum AlmondOrderError: Error, CaseIterable { case invalidSelection // 잘못된 선택 case lackOfMoney // 예산 부족 case outOfStock ..
제네릭 Generic은 단어의 뜻이 '포괄적인, 통칭의'라는 의미입니다. 단어의 의미처럼 제네릭은 타입에 종속적이지 않도록 Swift 코드를 좀 더 유연하고, 재사용 가능한 함수 및 코드를 작성할 수 있도록 도와주는 요소입니다. Swift 표준 라이브러리에서 기본 제공하는 swap 함수를 예시로 들 수 있습니다. Swift의 기본 swap함수가 없다고 가정하고, 두 Int값을 inout 매개변수로 받아서 해당 원본값을 서로 바꿔주는 함수를 작성한다고 한다면, // a, b 두 개의 Int값을 바꾸려는 함수 func swapTwoInts(_ a: inout Int, _ b: inout Int) { let temporaryA = a a = b b = temporaryA } var intOne = 3 var ..