상수 : 변하지 않는 일정한 값 (let)
변수 : 변할 수 있는 값 (var)
let a : Int = 100
//a = 200 // Cannot assign to value: 'a' is a 'let' constant
var b : Int = 200
b = 300
let 키워드를 이용해서 선언한 값은 상수로 되어서 재할당이 불가능
var 키워드는 재할당이 가능
ex) 모바일 기기의 전체용량은 상수로, 데이터 용량은 변수로
- Int : 64bit 정수형
- UInt : 부호가 없는 64bit 정수형
- Float : 32bit 부동 소수점
- Double : 64bit 부동 소수점
- Bool : true, false
- Character : 문자
- String : 문자열
- Any : 모든 타입을 지칭하는 키워드
var number : Int = 10
var number = 10
Int 타입을 명시해주지 않아도 Complier가 타입을 추론할 수 있다.
데이터들의 집합 묶음
- Array : 데이터 타입의 값들을 순서대로 저장하는 리스트
- Dictionary : 순서없이 key와 value 한쌍으로 데이터를 저장하는 컬렉션 타입
- Set : 같은 데이터 타입의 값을 순서없이 저장하는 리스트
// Array
// numbers의 타입은 Int를 담은 Array, 배열을 생성하려면 Array<Int> 뒤에 ()를 적는다.
var numbers : Array<Int> = Array<Int>()
// 축약된 선언법
var names = [String]()
var address: [String] = []
// append 메소드 : Array에 elements를 순차적으로 하나씩 넣는다.
numbers.append(1)
numbers.append(2)
numbers.append(3)
// [] bracket notation으로 Array의 elements에 접근할 수 있다.
numbers[0] // 1
numbers[1] // 2
// insert 메소드 : Array의 원하는 Index에(at 사용) elements를 삽입할 수 있다.
numbers.insert(4, at: 2) // [1,2,4,3]
// remove 메소드 : Array의 Index에 맞는 elements를 삭제할 수 있다.
numbers.remove(at: 0) // 1
numbers // [2,4,3]
// Dictionary
// dic의 타입은 Key: String, value : Int인 Dictionary, 생성하려면 뒤에 ()를 적는다.
var dic : Dictionary<String, Int> = Dictionary<String, Int>()
// 축약된 선언법
var user: [String: Int] = ["김대성": 1]
// []안에 key값을 통해 Dictionary에 값을 추가, 수정할 수 있다.
user // ["김대성": 1]
user["박소민"] = 3
user["까까"] = 5
user["까까"] = 6
user // ["김대성": 1, "박소민": 3, "까까": 6]
// removeValue 메소드 : forKey를 통해 삭제할 수 있다.
user.removeValue(forKey: "김대성")
user // ["까까": 6, "박소민": 3]
// Set
// 순서가 없고, 멤버가 유일한 것을 보장하는 컬렉션 타입
var set: Set = Set<Int>()
// set는 축약형 선언이 없다.
set.insert(10) // (inserted true, memberAfterInsert 10)
set.insert(20) // (inserted true, memberAfterInsert 20)
set.insert(30) // (inserted true, memberAfterInsert 30)
set.insert(30) // (inserted false, memberAfterInsert 30)
set.insert(30) // (inserted false, memberAfterInsert 30)
set.insert(0)
set // {0, 20, 30, 10} , 중복된 멤버를 허용하지 않고, 순서도 없다.
//remove 메소드 : set의 member를 삭제할 수 있다.
set.remove(20)
// contains 메소드 : set에 포함되어있는지 bool값으로 나온다.
set.contains(10)