//이름 가리는 예제
func hideName(myName: String) -> String {
let secondIndex = myName[myName.index(after: myName.startIndex)]
return myName.replacingOccurrences(of: String(secondIndex), with: "*")
}
hideName(myName: "베르나르 베르베르")
💻 출력 :
베*나* 베*베*
var array = ["A","B","C"]
print(array) // ["A", "B", "C"]
//오름차순 정렬
var array = [1,3,5,2,4,6]
array.sort()
print(array) // [1, 2, 3, 4, 5, 6]
//내림차순 정렬
var array = [1,3,5,2,4,6]
array.sort()
array.reverse()
print(array) // [6, 5, 4, 3, 2, 1]
//내림차순 정렬
var array = [1,3,5,2,4,6]
array.sort(by: >)
print(array) // [6, 5, 4, 3, 2, 1]
//sorted는 기존 배열은 그대로 두고 새로운 배열을 리턴
var array = [1,3,5,2,4,6]
array.sorted() // [1, 2, 3, 4, 5, 6]
print(array) // [1, 3, 5, 2, 4, 6]
//내림차순 정렬
var array = [1,3,5,2,4,6]
array.sorted(by: >) // [6, 5, 4, 3, 2, 1]
print(array) // [1, 3, 5, 2, 4, 6]
sorted()
: 기존 배열은 그대로 두고 정렬된 새로운 배열
을 리턴sort()
와 sorted()
의 시간 복잡도 : O(n log n)
let a = Array<Int>(1...10)
let b = a[3..<6] // [4, 5, 6]
startIndex
, endIndex
를 가져서 필요한 영역만큼을 액세스. startIndex
의 값은 항상 0이라는 보장이 없음. 따라서 안전을 위해서는 특정한 정수값보다는 startIndex
, endIndex
를 쓰기ArraySlice
가 살아있는 동안에 Array에 대한 참조
는 계속 유지되므로, 이는 오랜시간동안 사용하지 않는 것이 좋음. 특히 라이프 사이클이 긴 클로저
등에서 암묵적으로 ArraySlice를 참조하지 않기
. 이는 원본 배열 자체의 라이프 사이클을 강제로 연장하여 리소스 낭비의 원인
prefix
, suffix
와 같은 부분열(Sequence.Subsequcene)
을 리턴하는 메소드들도 모두 ArraySlice
를 리턴하며, 독립적인 부분열 사본을 리턴하는게 아님let array = [10,11,12,13,14,15]
array.firstIndex(of: 12) // 2
contains
는 문자열이나 배열에 특정 문자가 속해있는지 문자열 포함여부를 Boolean
값으로 리턴해주는 함수var queue = Array<Int>(1 ... n)