글 작성자: 만렙개발자

1. 욕심쟁이 스위프트

  • 명령형 프로그래밍 패러다임
  • 함수형 프로그래밍 패러다임
  • 객체지향 프로그래밍 패러다임
  • 프로토콜 지향 프로그래밍 패러다임

2. 네이밍 룰

  • 함수, 인스턴스: 소문자 카멜케이스(Lower Camel Case)
  • 구조체, 클래스, 익스텐션, 프로토콜, 열거형: 대문자 카멜 케이스(Upper Camel Case)

3. 변수와 상수

  • 변수
    • var [변수명]: [데이터 타입] = [값]
    • ex1) var name: String = "lv99"
    • ex2) var name: "yagom" (타입 추론에 의한 자동 타입 설정)
  • 상수
    • let [상수명]: [데이터 타입] = [값]
    • ex1) let name: String = "lv99"
  • nil: 널(NULL) 값 = 빈 값

4. 기본 데이터 타입

  • Bool, Int, Int64, UInt, Float, Double, Character, String
  • 기본 프로퍼티 및 함수
    • Int.max, Int.min
    • String.append()
  • 형변환 자동으로 X
  • Any, AnyObject

5. 함수

  • 함수의 기본 형태
    func function_name(parameters) -> return_type { 
        //some_codes
        return 
    } 
    
    // example
    func helloWorld(language: String) -> String { 
        let result: String = "Hello \(language) World!"
        return result
    } 
    
    print(helloWorld(language:"Swift"))
  • 오버라이드(재정의): 매개변수의 타입이 다른 것
  • 오버로드(중복정의): 매개변수 개수가 다른 것

6. 컬렉션

  • Array
    • Linked list로 구현되어있음
      // 빈 String Array 생성
      var emptyArray: [String] = Array<String>() 
      var emptyArray: [String] = [String]() 
      var emptyArray: [String] = []
      
      // String Array 생성 및 초기화
      var exampleArray: Array<String> = ["lv", "99", "tistory", "swift"]
      var exampleArray: [String] = ["lv", "99", "tistory", "swift"]
    • 프로퍼티
      • isEmpty, count, first, last
    • 함수
      • index(of:), append(_:), insert(_:at:), remove(_:), remove(at:), removeFirst(), removeLast()
    • 서브스크립트
      • array_name[3 ... 7]
  • Dictionary
    • 딕셔너리의 key는 여러 값으로 이루어질 수 있지만, 유일해야함
    • 존재하지 않는 key에 접근할 경우, nil 반환 (에러X)
      // Key: String, Value: Int의 빈 딕셔너리 생성
      var stringKeyIntValue: Dictionary<String,int> = Dictionary<String,int>()
      // [String: Int] == Dictionary<String, int>
      var stringKeyIntValue: [String: Int] = [String: Int]()
      var stringKeyIntValue: [String: Int] = [:]
      
      // Key: String, Value: Int의 딕셔너리 초기화 및 생성
      var stringKeyIntValue: [String:Int] = ["lv":99, "swift":1]
    • 프로퍼티
      • -isEmpty, count,
    • 함수
      • removeValue(forKey:)
  • Set
    • 정렬되지 않은 유일한 원소(값)들의 컬렉션
    • 선언 (Declaration)
      @frozen struct Set<Element> where Element : Hashable
    • 예제
      let ingredients: Set = ["cocoa beans", "sugar", "cocoa butter", "salt"]
      if ingredients.contains("sugar") {
        print("No thanks, too sweet.")
      }
      // Prints "No thanks, too sweet."
    • 예제1
      if primes.isEmpty {
        print("No primes!")
      } else {
        print("We have \(primes.count) primes.")
      }
      // Prints "We have 4 primes."
      
      let primesSum = primes.reduce(0, +)
      // 'primesSum' == 17
      
      let primeStrings = primes.sorted().map(String.init)
      // 'primeStrings' == ["2", "3", "5", "7"]
    • 프로퍼티
      • isEmpty, count, capacity
    • 함수
      • contains(_:), isSubset(of:), isSuperset(of:), union(_:), intersection(_:), subtracting(_:)

References

  1. https://developer.apple.com/documentation/swift/
  2. 야곰 블로그
  3. https://docs.swift.org/swift-book/