[ Swift ] 상수, 변수, 타입

불변을 선호하는 스위프트의 상수, 변수와 타입에 대해서 알아본다
김보람's avatar
Sep 27, 2024
[ Swift ] 상수, 변수, 타입

[ 변수와 상수 ]

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

  • 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

b0-0d