[ 변수와 상수 ]
변수와 상수 모두 초기화 되기 이전에 접근이 불가능하며 같은 스코프에 한번만 선언 가능하다.
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()