inblog logo
|
RN 삽질 일지

    [ Swift ] 상수, 변수, 타입

    불변을 선호하는 스위프트의 상수, 변수와 타입에 대해서 알아본다
    김보람's avatar
    김보람
    Sep 27, 2024
    [ Swift ] 상수, 변수, 타입
    Contents
    [ 변수와 상수 ][ Bool type ][ Int type ][ UInt type ][ Float type ][ Double type ][ Character type ][ String type ][ Any type ][ AnyObject type ][ nil ][ Array type ][ Dictionary type ][ Set type ]

    [ 변수와 상수 ]

    변수와 상수 모두 초기화 되기 이전에 접근이 불가능하며 같은 스코프에 한번만 선언 가능하다.

    • var - 변수

      • 재할당 가능한 변수를 할당할 때 사용되는 키워드이다.

      var a : Character = "A"
      print(a)
      //출력: A
      
      
      a = "B"
      print(a)
      //출력: B
    • let - 상수

      • 재할당 불가능한 상수를 할당할 때 사용되는 키워드이다.

      let a : Character = "A"
      a = "B"
      print(a)
      
      //에러출력: 상수 키워드에 변수를 할당할 수 없어 할당하고 싶으면 var로 바꿔 라는 에러가 출력됨
      //error: MyPlayground.playground:2:1: error: cannot assign to value: 'a' is //a 'let' constant
      //a = "B"
      //^
      
      //MyPlayground.playground:1:1: note: change 'let' to 'var' to make it //mutable
      //let a : Character = "A"
      //^~~
      //var


    [ Bool type ]

    • true/fase(참/거짓)의 두가지 값만을 나타낸다

    var booltype : Bool = true
    • JS와 다르게 0 or 1 로는 표현할 수 없다

    var booltype : Bool = true
    booltype = 1
    
    print(booltype)
    //에러출력:정수 리터럴 값 '1'은 부울로 사용할 수 없습니다.
    //error: MyPlayground.playground:3:12: error: integer literal value '1' //cannot be used as a boolean; did you mean 'true'?
    //booltype = 1
    //           ^
    //           true
     

    [ Int type ]

    • 64비트의 정수형 타입으로 양수와 음수, 0의 값을 나타낸다

    var intType : Int = 10
    intType = -10
    intType = 0
    intType = 10.1
    
    //에러 출력 : 'Double' 유형의 값을 'Int' 유형에 할당할 수 없습니다.

    [ UInt type ]

    • 부호를 포함하지 않은 수를 나타내는 값으로 양의 정수의 타입이다

    var uIntType : UInt = 100
    var uIntType : UInt = -100
    //에러반환:부호 없는 유형 'UInt'에 저장하면 음의 정수는 불가함

    [ Float type ]

    • 32비트 부동소수를 나타내는 타입이다

    • 정수를 넣어주어도 무리없이 받아줌

    var floatType : Float = 10.5
    floatType  = 10

    [ Double type ]

    • 64비트 부동소수를 나타내는 타입이다.

    var doubleType : Double = 10.5
    doubleType = 10

    예를 든 코드를 보면 floatType과 doubleType모두 같은 수를 할당했으나 정의한 타입이 다르므로 아래와 같이 서로에게 할당할 수는 없다

    [ Character type ]

    • 유니코드로 나타낼수있는 한글자의 문자 타입이다

    var characterType : Character = "A"
    characterType  = "🙂"
    • 연속된 문자의 경우 에러를 반환한다

    [ String type ]

    • 문자열을 나타낸다

    var stringType : String = "AAA"
    stringType  = "A"
    • 한글자의 문자도 수용하나 character type으로 지정한 것을 할당하진 못한다

    [ Any type ]

    • 빈값(nil)이 아닌 스위프트의 모든 타입을 수용한다

    var anyType : Any = "String"
    anyType = true
    anyType = 100.234
    • 하지만 Any타입으로 지정하고 문자열을 할당한 후 String 타입에 재 할당할 순 없다 다른 타입들도 동일하다

    [ AnyObject type ]

    • 클래스의 인스턴스를 나타낸다

    class SomeClass {}
    var anyObjectType : AnyObject = SomeClass()

    [ nil ]

    • 빈값을 나타낸다

    • JS에서의 null과 비슷

    [ Array type ]

    • 순서가 있는 컬렉션 타입을 나타낸다

    • var로 선언해야 변형이 가능하며 let으로 선언한 경우 불변의 값을 갖는다

    • Array키워드옆 꺾쇠 괄호로 array에 들어갈 수 있는 타입을 지정한다

    //정수타입을 수용하는 array
    var intArrayType : Array<Int>
    
    //당연히 지정한 타입외엔 들어갈 수 없다
    • 빈 배열 생성 방법

    var arrayType : Array<Int> = Array<Int>()
    var arrayType2 : Array<Int> = [Int]()
    var arrayType3 : [Int] = [Int]()
    var arrayType4 : [Int] = []
    • 배열에 요소 추가 방법

      • append

        • 요소의 맨뒤에 추가된다

      • inset

        • 요소 중간에 추가할 수 있다

        • 오버헤드가 발생되므로 되도록 사용하지 않기
          **오버헤드: 프로그램이나 코드가 수행될 때 추가적으로 발생하는 비용

      • append(contentsOf: […]) 

        • 뒤쪽으로 2개 이상의 요소를 추가하고 싶을때 사용한다

      • insert(contentsOf: […], at: index)

        • 중간에 2개 이상의 요소를 추가하고 싶을때 사용한다

    • 요소를 삭제 하는 방법

      • remove( at : idx )

        • idx위치의 요소를 삭제한다

      • removeAll()

        • 모든 요소를 삭제한다

      • 그 외

        • removeFirst()

          • 첫 요소 삭제

        • removeLast()

          • 마지막 요소를 삭제하나 마지막 요소가 없을 경우 에러를 반환한다

        • popLast()

          • 마지막 요소를 삭제하고 마지막 요소가 없어도 에러를 반환하지 않고 nil를 반환한다

    • 요소가 존재하는지 확인하는 방법

      • contains(확인요소)

        • bool값을 반환한다

    • 요소의 개수를 확인하는방법

      • count

        • 숫자를 반환한다

    [ Dictionary type ]

    • 키와 값을 쌍으로 가지는 컬렉션 타입이다.

    • var로 선언해야 변형이 가능하며 let으로 선언한 경우 불변의 값을 갖는다

    • Dictionary키워드옆 꺾쇠 괄호로 key와 value의 타입을 지정한다

    //String타입을 key로 Int타입을 value로 가지는 딕셔너리타입 지정
    var dictionaryType : Dictionary<String, Int>
    • 빈 딕셔너리 생성방법

    var dictionaryType : Dictionary<String, Int> = [String:Int]()
    var dictionaryType2 : Dictionary<String, Int> = [:]
    • 요소 추가 방법

      • 변수명[생성될 키명] = 값

    • 요소 삭제 방법

      • removeValue(forKey: 삭제할 키 이름)

      • 변수명[삭제할 키 이름] = nil

    • 요소 갯수 확인

      • count

    • 비어있는지 확인

      • isEmpty

    [ Set type ]

    • 중복을 가지지 않는 컬렉션타입

    • Set뒤 꺽쇠안에 요소 타입을 지정한다

    var setType : Set<Int> = Set<Int>()
    • 요소 추가 방법

      • insert

        • 중복을 가지지 않기 때문에 같은값을 여러번 추가해도 하나만 존재한다

    • 요소 삭제 방법

      • remove(요소)

        • 지정한 요소만 삭제

      • removeAll()

        • 요소 전체

    • 요소 갯수 확인

      • count

    • 비어있는지 확인

      • isEmpty

    • 합집합, 교집합, 차집합

      • union()

      • intersection()

      • subtracting()

    Share article
    Contents
    [ 변수와 상수 ][ Bool type ][ Int type ][ UInt type ][ Float type ][ Double type ][ Character type ][ String type ][ Any type ][ AnyObject type ][ nil ][ Array type ][ Dictionary type ][ Set type ]

    김보람 | 930802qhfka@gmail.com

    RSS·Powered by Inblog