Swift 배열에서 swapAt()으로 두 항목 위치 바꾸기
스위프트에서 배열에 있는 두 항목을 바꿔주는 swapAt() 함수가 있다. 바꾸고 싶은 두 항목의 인덱스를 인자로 넣어서 사용하면 된다. 이 함수는 새로운 배열을 반환하지 않고 기존에 있는 배열을 수정해서 반환한다. 당연하겠지만 배열 넘어선 인덱스 값을 사용하면 에러가 발생한다. var fruits = ["apple", "banana", "cherr...
스위프트에서 배열에 있는 두 항목을 바꿔주는 swapAt() 함수가 있다. 바꾸고 싶은 두 항목의 인덱스를 인자로 넣어서 사용하면 된다. 이 함수는 새로운 배열을 반환하지 않고 기존에 있는 배열을 수정해서 반환한다. 당연하겠지만 배열 넘어선 인덱스 값을 사용하면 에러가 발생한다. var fruits = ["apple", "banana", "cherr...
스위프트(Swift)의 스위치(switch) 문은 패턴 매칭할 때 유용한데, 특히 여러 값을 동시에 매칭할 때 더욱 강력한 기능을 발휘한다. 튜플(tuple)을 사용하여 여러 값을 그룹화하고 한 번에 매칭할 수 있으며, 와일드카드(_)를 사용하여 특정 값을 무시할 수도 있다. 스위치문에서 케이스의 순서가 매우 중요하기 때문에 더 구체적인 케이스를 먼저...
스위프트에서 컬렉션(collection)이 비어 있는지 확인하는 방법이 두 가지가 있다. 컬렉션의 count 값이 0 이거나 isEmpty 프로퍼티를 사용한다. 이 둘의 차이점이 있는지 알아보자. isEmpty Swift standard library에서 isEmpty가 어떻게 구현되어 있는지 보면 아래와 같다. isEmpty는 count == 0 ...
스위프트 고차 함수들 중에 map과 함께 reduce 함수를 많이 사용하게 된다. 시퀀스를 클로저를 통해 하나의 값으로 도출하는 강력한 함수이다. let numbers = [1, 2, 3, 4, 5] let sum = numbers.reduce(0, +) // or let sum = numbers.reduce(0) { $0 + $1 } print(su...
스위프트의 zip() 함수는 두 개의 Sequence의 항목끼리 묶어서 하나의 튜플 Sequence로 병합한다. 아래와 같이 두 개의 서로 다른 타입의 시퀀스를 하나의 시퀀스로 만들 수 있다. let words = ["일", "이", "삼", "사"] let numbers = 1...4 for (word, number) in zip(words, n...
Integer의 배수 확인하기
Swift에서 컬렉션(collection)으로 작업할 때는 배열(array)과 집합(set)이라는 두 가지 기본 데이터 구조가 자주 등장한다. 어떤 경우에서 적절한 데이터 구조를 사용할지에 대해 자세히 알아보자. 공식 문서에는 배열과 집합을 아래와 같이 정의한다. 배열(Array): 정렬된 무작위 액세스 컬렉션(“An ordered, rando...
문자열 보간법이란? 문자열 보간(String interpolation)은 고정 텍스트를 변수, 표현식, 값과 혼합하여 문자열을 구성할 수 있는 Swift의 강력한 기능이다. Swift의 문자열 보간 시스템은 타입에 안전하며 효율적이고 StringInterpolation 프로토콜을 통해 고도로 사용자 정의할 수 있다. let name = "John" ...
SE-0220에서 소개한 count(where:) 기능이 Swift 6에 추가 되면서 배열, Set 같은 곳에서 일치하는 항목의 개수를 구할 수 있다. 이전에는 filter()와 count를 조합해서 구할 수 있었는데 이는 즉시 버려지는 새로운 배열을 만드는 단점이 있었다. count(where:)는 이런 퍼포먼스 문제를 해결하고 사용자가 읽고 쉽게 ...
스위프트에서 숫자를 더 읽기 쉽게 작성하는 방법이 있다. Int와 Float에서 모두 앞에 0을 추가할 수 있고 밑줄을 포함해서 가독성을 높일 수 있다. 이 방법들은 모두 기본 값에 영향을 미치지 않는다. let paddedDouble = 000123.456 let oneMillion = 1_000_000 let justOverOneMillion =...