Swift3.0 - Array

4330 단어
Swift3.0 - 정말 간단해 스위프트 3.0 - 데이터 유형 Swift3.0 - Array Swift3.0 - 사전 Swift3.0 - 옵션 Swift3.0 - 집합 Swift 3.0 - 흐름 제어 Swift3.0 - 객체 및 클래스 Swift3.0 - 속성 Swift3.0 - 함수 및 클로즈업 Swift3.0 - Swift 초기화 및 해제 3.0 - 프로토콜 프로토콜 프로토콜 Swift3.0 - 클래스와 패브릭의 차이점 Swift3.0 - 열거 Swift 3.0 - 확장 Swift3.0 - Swift 3.0 - 일반 Swift 3.0 - 예외 오류 Swift3.0 - Swift 단언 3.0 - 자동 참조 개수(strong, weak, unowned) Swift3.0 - API Swift 테스트 3.0 - 객체의 ID Swift3.0 - 주석 Swift3.0 - 메타 유형 Swift3.0 - 공간 이름 Swift3.0 - 대상 판정 등 스위프트3.0 - Self의 용도 탐구 Swift3.0 - 클래스 Swift3.0 - 동적으로 객체(인스턴스)를 호출하는 방법Swift3.0 - 텍스트 출력 Swift3.0 - 흑마법 swizzle Swift 3.0 - 미러링된 Swift3.0 - 만나는 구덩이

기본적

  • 정의
  • list1 = [" ","2","3","4"]
    let list2:[String] = [" ","2","3","4"]
    let list3:[Any] = [" ","2","3",3,UILabel()]
    let list4:NSArray =  [" ","2","3","4",UILabel()]
    let list5:NSMutableArray =  ["1","2","3","4"]
    
  • 배열 비우기
  • list2.removeAll() //   var
    list2 = [] //  var
    list5.removeAllObjects() // var  let  
    list5 = [] //  var
    
  • 대체 작업
  • shoppingList[4...6] = ["Bananas", "Apples"] //  4...6  
    
  • 삽입 제거 작업
  •  shoppingList.insert("Maple Syrup", at: 0)
     let mapleSyrup = shoppingList.remove(at: 0)
     let apples = shoppingList.removeLast()
    
  • 스트리밍 그룹
  •  for item in shoppingList {
      print(item)
     }
     for (index, value) in shoppingList.enumerated() {
        print("Item \\(index + 1): \\(value)")
     }
    

    고급

  • 인식맵
  • 그것의 정의를 한번 봅시다.
    func map(_ transform: (Element) throws -> T) rethrows -> [T]
    

    설명: T는 일반적인transform: 패키지 함수 매개 변수와 반환 값이 있는 패키지 함수 [T] 함수를 보내야 합니다. [T] 함수는 T 형식의 그룹에 되돌려줍니다.
    응용: 우리는 한 그룹의 데이터 중 20보다 큰 숫자에 3을 곱하는 수요가 있다.
    //1. 
    var numbers = [21, 19, 7, 12]
    //2. 
    var closure = {(number:Int) -> Int in
    var  result = number
    if number > 20 {
    result *= 3
    }
    return result
    }
    //3. map 
    print(numbers.map(closure))
    

    swift는 유형 추정 기능이 있기 때문에 우리는 이렇게 쓸 수 있다
    let mappedNumbers = numbers.map({ number -> Int in
        if number > 20{
          return 3 * number
        }
          return number
    })
    

    만약 논리적 판단이 없다면 모든 값을 통일적으로 3으로 곱하면 우리는 심지어 이렇게 쓸 수 있다
    let mappedNumbers = numbers.map({ number -> Int in
      return number*3
    })
    

    좀 더 깔끔하게.
    let mappedNumbers = numbers.map({ number  in
       number*3
    })
    

    만약 그룹의 값을 모두 0으로 바꾸려면 아래와 같이
     let mappedNumbers = numbers.map({_ in 
       return 0
    })
    

    포워드 테스트 한번...in과 맵의 속도 테스트 1: 수조numbers의 숫자가 0으로 바뀐다
    for ... in
    var numbers = Array(repeating: 3, count: 1000000)
    var date1 = NSDate()
    for i in 0..

    두 번의 테스트 데이터 실행
    0.0242440104484558 0.0248509645462036
    map
    var numbers = Array(repeating: 3, count: 1000000)
    var date1 = NSDate()
    var newNumbers = numbers.map({_ in
        return 0
    })
    print(NSDate().timeIntervalSince(date1 as Date))
    

    두 번 실행 결과
    0.219065964221954 0.201902985572815
    제가 작은 데이터를 테스트해서 100개의 숫자에 대한 그룹 설정 값을 for...in
    0.000165998935699463
    map
    0.0013270378112793
    결론: 실행 속도에서 for...비교적 빠르다
    문제1:맵의 장점은 어디에 있습니까?

    sort 정렬

    public func sorted(by areInIncreasingOrder: (Element, Element) -> Bool) -> [Element]
    

    매개변수:
    areIncreasingOrder 매개 변수 두 개
    우리는 1만 개의 수조를 정렬하여 for in 순환 정렬 시간을 측정한다
    //거품 정렬법
    ar date1 = NSDate()
    numbers.sort(by: {$0 > $1})
    var swap:Int
    for i in 0..

    실행 결과
    3.54646998643875 3.48700600862503
    sort를 사용하여 100만 개의 숫자를 정렬하다
    var numbers = Array(repeating: 3, count: 1000000)
    for i in 0.. $1})
    print(NSDate().timeIntervalSince(date1 as Date))
    

    실행 결과
    2.71596896648407 2.66568303108215
    결론:
    정렬을 사용하면 애플이 제공하는 방법을 추천합니다.

    좋은 웹페이지 즐겨찾기