• 스위프트의 데이터 타입

       var x = 20   // x : int 생략가능 =위와 같이 초깃값이 있을 경우에는 컴파일러가 타입 추론(type inference)을   하므로  이터 타입을 명시할 필요 없음
       x = 10       // ‘=’ 양쪽에는 동일한 공백을 사용해야 오류가 발생하지 않는다.
       print(x)     // 결과 값 = 10 
    
  • 함수 [print]

      print("A", "B", "C", "D", "E", separator: "..")  // print 함수에 ‘,’를 활용해서 한번에 여러개 출력가능하다.
      for n in 1...5{                                  // separator: ".." 출력 하려는 문자 중간에 원하는 문자 삽입기능
      print(n, terminator: " ")                        // terminator: " " 포문의 기본형인 개 행이 아닌 하나의 문자열로 인식하게 해주는 기능
      }
    
  • 자료형의 종류와 크기

      var x = 10
      print(type(of:x))					                 //type(of:x) 변수의 타입을 확인하기위한 명령어 
      let y = MemoryLayout.size(ofValue: x)		   //변수의 바이트 크기를 구하기 위한 명령어
      let z = MemoryLayout<Int>.size			       //<자료형> 자료형의 크기를 직접 구하기 위한 명령어
      print(y, z)					                       //print를 사용해 변수의 크기를 출력하는 방법과 명령어를 직접적으로 대입해서 바로 출력하는 방법이 있다.
      print(MemoryLayout.size(ofValue: x))		  
      print(MemoryLayout<Float>.size)
    
    • 일반적으로 초깃값을 주지 않을 경우에만 자료형을 씀
  • 정수 데이터 타입 : Int
    • 정수(소수점이 없는 수)를 저장하는 데 사용
    • Int 데이터 타입은 해당 코드가 실행되는 플랫폼에 맞는 정수 크기를 사용

        print("Int32 Min = \(Int32.min) Int32 Max = \(Int32.max)") // \ = (출력하고 싶은 변수나 상수)
      
  • 부동 소수점 데이터 타입 /부울 데이터 타입

    • Double = > 64비트로 부동 소수점 수를 저장, 소수점 15자리 정확도
    • Float = > 32비트로 부동 소수점 수를 저장, 소수점 6자리 정확도
    • Bool = > 참 또는 거짓(1 또는 0) 조건을 처리할 데이터 타입 (데이터 타입을 처리하기 위해 값(true/false) 사용)
  • 문자 데이터 타입 : Character
    • 문자, 숫자, 문장 부호, 심볼 같은 유니코드(Unicode) 문자 하나를 저장
      • 스위프트에서의 문자들은 문자소 묶음(grapheme cluster)의 형태로 저장
        var hoChar1 : Character = "X"   // : Character 생략불가, 생략하면 String형으로 인식한다. 초깃값은 작은 따옴표가 아니고 큰 따옴표
      
  • 문자열 데이터 타입 : String
    • 단어나 문장을 구성하는 일련의 문자를 나타내는 데이터 타입이며 저장, 검색, 비교, 문자열 연결, 수정 등의 기능을 포함한다.
      • 문자열 보간(string interpolation)을 사용하여 문자열과 변수, 상수, 표현식, 함수 호출의 조합으로 만들 수도 있다
      var userName : String = "Shin" // : String 생략하는 것이 일반적이다.
    
  • 특수 문자/이스케이프 시퀀스
    • 표준 문자 세트뿐만 아니라 문자열에 개행, 탭, 또는 유니코드 값과 같은 항목을 지정할 수 있는 여러 특수 문자가 있다

      ex) 이스케이프 시퀀스(escape sequence)

    ※특수 문자들은 역슬래시를 접두어로 하여 구별

    • 스위프트에선 유니코드 구분가능하다.

      \u{nn} ― nn 위치에 유니코드 문자를 표현하는 두 개의 16진수가 배치되는 1바이트 유니코드 스칼라

  • 변수(var) VS 상수(let)
    • 변수(var) = 변수에 할당된 값은 변경 가능하다
    • 상수(let) = 어떤 값이 한번 할당되면 이후에 변경될 수 없다
    • 애플은 코드의 효율성과 실행 성능을 높이기 위해서 변수(var)보다는 상수(let)를 사용하라고 권장
  • 타입 어노테이션과 타입 추론

      var userCount : Int = 10    // : Int처럼 변수 또는 상수가 코드 내에서 선언되는 것이 타입 어노테이션이다.
      var userCount = 10 	        // 선언부에 타입 어노테이션이 없으면 스위프트 컴파일러는 상수 또는 변수의 				
      														// 타입을 식별하기 위해 타입추론을 한다.
    
  • 튜플(Tuple)
    • 여러 값을 하나의 개체에 일시적으로 묶는 방법 이며 함수에서 여러 값들을 한 번에 반환하는 것이다.
      • 저장된 값들이 모두 동일한 타입이어야 한다는 제약도 없다
      let hoTuple = (10, 12.1, "Hi")			                    // 항목들은 어떠한 타입도 될 수 있다.
      let HoTuple = (count: 10, length: 12.1, message: "Hi")  // 생성할 때 각 값에 이름을 할당할 수도 있다
      var hoString = hoTuple.1
      print(hoString)		//12.1			                          // 변수 설정 후 변수를 불러오며 출력가능
      print(HoTuple.2)		//Hi			                          // 변수의 위치로 출력가능
      print(myTuple.message)	//Hi			                      // 값의 이름으로 출력가능
    

    ※ var (myInt, , myString) = myTuple // ‘’ 사용시 값 무시 = 부동 소수점 수 무시