swift 6

스위프트의 배열과 문자열 꿀팁들

공부하다가 스위프트의 배열과 문자열은 파이썬과 달라서 정리해 봅니다. 주의할 점 위주로 정리해 봤습니다. 스위프트에서 문자열을 배열로 바꾸는 법 여러가지가 있으니 코드로 소개해 드리겠습니다. 열거형: let str = "ABC" var arr = [Character]() for i in str { arr.append(i) } print(arr) // ["A", "B", "C"] Array생성자로 직접 변환하기: let str = "ABC" let arr = Array(str) print(arr) // ["A", "B", "C"] map 이용하기: let str = "ABC".map { (n: Character) -> Character in return n } let str = "ABC".map { $0 ..

swift 2022.02.07

스위프트 배열에 원소 삽입, 제거, 찾기, 포함

스위프트 언어의 문법은 파이썬 언어라고 발표 초창기에 알려졌었다고 할 정도로 스위프트의 문법은 파이썬과 비슷한 부분이 많다. 값 삽입 배열에 원소를 삽입할 때는 어떨까? 배열의 맨 뒤에 값을 추가하는 방법으로는 append(_:)를 사용한다. 이는 파이썬과 동일함으로 생략하겠다. 배열의 특정 위치에 값을 삽입하고 싶을 경우에는 insert(_:at:)을 사용하고 예를 살펴보면 먼저 파이썬의 경우 a = [1, 2, 3] a.insert(0,0) print(a) # [0, 1, 2, 3] 0번째 인덱스에 0 삽입 스위프트의 경우 var a = [1, 2, 3] a.insert(0, at:0) print(a) 가 같은 코드가 되겠다. 한번에 여러 요소들을 한꺼번에 삽입하고 싶을 때는 append(conten..

swift 2022.02.07

Swift 고차함수 Map, Filter, Reduce

대표적인 고차함수로는 map, filter, reduce가 있다. 고차함수는 "다른 함수를 전달인자로 받거나 함수실행의 결과를 함수로 반환하는 함수"이다. MAP map은 데이터를 변형하고자 할 때 사용합니다. 기존 데이터를 변형하여 새로운 컨테이너를 만드는데, 기존 데이터는 변형되지 않습니다. 특히 map은 기존의 for-in 구문과 큰 차이가 없지만, map 사용시 다음과 같은 이점이 있습니다. 1. 코드의 간결성 2. 재사용 용이 3. 컴파일러 최적화 성능 좋음 map의 형태: array.map(Transform: T, throws -> T) for - in 구문과 비교해 보겠다. for - in: let array = [1, 2, 3, 4, 5] var xarray = [int]() for n i..

swift 2022.02.05

스위프트 배열과 enumerated()

스위프트 배열은 어떻게 선언 할까? let emptyArray: [Int] = [] let emptyArray2 = Array() let emptyArray3 = [Int]() 이렇게 3가지가 가능하다. 빈배열을 만들때는 반드시 Type을 명시하도록 하자. 크기가 정해진 배열 2가지로 선언이 가능하다. let zeroArray1 = [Int](repeating: 0, count: 10) // [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] let zeroArray2 = Array(repeating: 0, count: 10) // [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 1~12까지 숫자가 든 배열 let numbers: [Int] = Array(1...12) 배열에 들어있는 값의 개..

swift 2022.02.03

swift String.Index

파이썬이나 여타 언어들에서는 손쉽게 int로 배열의 인덱스에 접근할 수 있지만 swift의 경우 String.Index 타입을 이용해야한다. 바로 예를 들겠다. a = "abc" print(a[0]) # a 파이썬에서는 이는 너무 당연하다. 하지만 스위프트의 경우 var a = "abc" print(a[a.startIndex]) // a 위의 파이썬 코드와 동일한 코드이다. startIndex와 endIndex는 처음과 끝 인덱스를 의미하지만 endIndex는 파이썬으로 치면 len(a)와 같아서 a라는 문자열이 있다고 치면 a의 길이와 같다. 즉 인덱스 측면에서 봤을때는 1을 빼줘야한다. 코드로 설명하면 var endIndex = a.index(before: a.endIndex) var last = a..

swift 2022.02.03