반복문
Stride
지정된 값만큼의 시퀀스를 반환합니다. 이해를 쉽게 이야기하면stride(from:to:by:)
는 from:이상 to:미만
의 구간과 동일합니다.stride(from:through:by:)
는 from: 이상 through: 이하
구간과 동일합니다.
stride(from: 0, to: 10, by: 2).forEach {
print($0, terminator: ", ")
}
// 0, 2, 4, 6, 8
stride(from: 0, through: 10, by: 3).forEach {
print($0, terminator: ", ")
}
// 0, 3, 6, 9
stride(from: 20, through: 10, by: -2).forEach {
print($0, terminator: ", ")
}
// 20, 18, 16, 14, 12, 10
Array.Indices
배열의 유효한 인덱스를 오름차순으로 나타내는 유형입니다.
let arr = [1, 4, 6, 13, 9, 7, 3, 5, 16]
print(arr.indices)
// 0..<9
let arr2 = arr.indices.map { $0 }
print(arr2)
// [0, 1, 2, 3, 4, 5, 6, 7, 8]
String(repeating:count:)
지정된 횟수만큼 반복된 주어진 문자열을 나타내는 새 문자열을 만듭니다.
let str = "apple"
let str2 = String(repeating: str, count: 3)
print(str2)
// appleappleapple
배열 요소를 특정 요소로 변경
replaceSubrange
정해진 구간의 값을 변경합니다.
문자열을 변경하기 위해서는 Range<String.Index>
타입으로 넣어줘야 합니다.
var arr = [1, 4, 6, 13, 9, 7, 3, 5, 16]
arr.replaceSubrange(1...3, with: [2, 4, 6])
print(arr)
// [1, 2, 4, 6, 9, 7, 3, 5, 16]
var str = "Hello, world"
let startIndex = str.index(str.startIndex, offsetBy: 7)
str.replaceSubrange(startIndex..<str.endIndex, with: "apple")
print(str)
// Hello, apple
swapAt
배열의 요소를 변경합니다.
var numbers = [1, 2, 3, 4, 5]
numbers.swapAt(1, 3)
print(numbers)
// [1, 4, 3, 2, 5]
reverse
배열의 요소를 반전시킵니다.
var arr = [1, 4, 6, 13, 9, 7, 3, 5, 16]
arr[2...5].reverse()
print(arr)
// [1, 4, 7, 9, 13, 6, 3, 5, 16]
특정 값 검색
[String] hasPrefix / hasSuffix
입력된 문자열이 앞/끝 부분에 있는지 확인합니다.
var text = "Hello, World!"
print(text.hasPrefix("Hello")) // true
print(text.hasPrefix("el")) // false
print(text.hasSuffix("!")) // true
print(text.hasSuffix("World")) // false
text.removeLast()
print(text.hasSuffix("World")) // true
firstIndex(of:) / lastIndex(of:)
지정된 값이 나타나는 첫/마지막 인덱스를 반환합니다.
값이 없다면 nil 입니다.
let text = "Hello, World!"
let st = text.firstIndex(of: "l")!
let et = text.lastIndex(of: "l")!
print(text[st...et]) // llo, Worl
let array = [1, 2, 3, 4, 5, 6, 4, 4, 9]
let sa = array.firstIndex(of: 4)!
let ea = array.lastIndex(of: 4)!
print(array[sa...ea]) // [4, 5, 6, 4, 4]
contains
시퀀스에 지정된 요소가 포함되어 있는지 여부를 나타내는 부울 값을 반환합니다.
let cast = ["Vivien", "Marlon", "Kim", "Karl"]
print(cast.contains("Marlon")) // true
print(cast.contains("James")) // false
부분 컬렉션 가져오기
prefix(n) / suffix(n)
초기/마지막 요소를 포함하는 지정된 최대 길이까지 시퀀스를 반환
let numbers = [1, 2, 3, 4, 5]
print(numbers.prefix(2)) // [1, 2]
print(numbers.prefix(10)) // [1, 2, 3, 4, 5]
print(numbers.suffix(2)) // [4, 5]
print(numbers.suffix(10)) // [1, 2, 3, 4, 5]
let text = "Hello, World!"
print(text.prefix(3)) // Hel
print(text.suffix(3)) // ld!
String
lowercased() / uppercased()
문자열을 소/대문자로 변환하면 내보냅니다.
split(separator:)
결과 배열은 최대 maxSplits + 1
개의 하위 시퀀스로 구성됩니다. 컬렉션을 분할하는 데 사용되는 요소는 하위 시퀀스의 일부로 반환되지 않습니다.
let line = "BLANCHE: I don't want realism. I want magic!"
print(line.split(separator: " "))
// ["BLANCHE:", "I", "don\'t", "want", "realism.", "I", "want", "magic!"]
components(separatedBy:)
주어진 구분 기호로 나눈 수신자의 부분 문자열을 포함하는 배열을 반환합니다.
let line = "BLANCHE: I don't want realism. I want magic!"
print(line.components(separatedBy: " "))
// ["BLANCHE:", "", "", "", "", "I", "don\'t", "want", "realism.", "", "", "I", "want", "magic!"]
Character
isLetter
이 문자가 문자인지 여부를 나타내는 부울 값입니다.
asciiValue
ASCII 문자인 경우 이 문자의 ASCII 인코딩 값을 UInt8
로 반환합니다.
isUppercase / isLowercase
대/소문자로 간주할지 여부를 나타내는 부울 값입니다.
isNumber
이 문자가 숫자를 나타내는지 여부를 나타내는 부울 값입니다.
고차함수
- compactMap
- flatMap
- reduce
- zip
Dictionary
updateValue(:forKey:)
주어진 키에 대해 사전에 저장된 값을 업데이트하거나 키가 존재하지 않는 경우 새 키-값 쌍을 추가합니다.
removeValue(forKey:)
주어진 키와 관련 값을 사전에서 제거합니다.
키가 해시 가능을 준수할 때 사용할 수 있습니다.
keys
사전의 모든 키를 나타내는 컬렉션을 반환합니다.
values
사전의 모든 값들을 나타내는 컬렉션을 반환합니다.
Set
union
이 집합과 주어진 시퀀스의 합집합을 새로운 Set타입으로 반환합니다.
let attendees: Set = ["Alicia", "Bethany", "Diana"]
let visitors = ["Marcia", "Nathaniel"]
let attendeesAndVisitors = attendees.union(visitors)
print(attendeesAndVisitors)
// ["Diana", "Nathaniel", "Bethany", "Alicia", "Marcia"]
intersection
이 집합과 주어진 시퀀스의 교집합을 새로운 Set타입으로 반환합니다.
let employees: Set = ["Alicia", "Bethany", "Chris", "Diana", "Eric"]
let neighbors: Set = ["Bethany", "Eric", "Forlani", "Greta"]
let bothNeighborsAndEmployees = employees.intersection(neighbors)
print(bothNeighborsAndEmployees)
// ["Bethany", "Eric"]
symmetricDifference
이 집합 또는 지정된 시퀀스에 있지만 둘 다에 없는 요소가 포함된 새 집합을 반환합니다.
let employees: Set = ["Alicia", "Bethany", "Diana", "Eric"]
let neighbors = ["Bethany", "Eric", "Forlani"]
let eitherNeighborsOrEmployees = employees.symmetricDifference(neighbors)
print(eitherNeighborsOrEmployees)
// ["Diana", "Forlani", "Alicia"]
isSubset(of:)
이 집합이 주어진 집합의 하위 집합인지 여부를 나타내는 부울 값을 반환합니다.
let employees: Set = ["Alicia", "Bethany", "Chris", "Diana", "Eric"]
let attendees: Set = ["Alicia", "Bethany", "Diana"]
print(attendees.isSubset(of: employees))
// true
'Language > Swift' 카테고리의 다른 글
[Swift] Protocol-Oriented Programming: POP (0) | 2024.04.30 |
---|---|
UIActivityViewController 공유하는 그거 (0) | 2024.03.08 |
[Swift] UIImage, CGImage 그리고 CIImage 언제 사용되나 (0) | 2024.02.14 |
[Swift] Timer vs DispatchSourceTimer (1) | 2023.11.26 |
[Swift] AttributedString (0) | 2023.11.16 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!