// 빈 Int Array 생성var integers: Array<Int> =Array<Int>()
// 같은 표현// var integers: Array<Int> = [Int]()// var integers: Array<Int> = []// var integers: [Int] = Array<Int>()// var integers: [Int] = [Int]()// var integers: [Int] = []// var integers = [Int]()Array 활용
integers.append(1)
integers.append(100)
// Int 타입이 아니므로 Array에 추가할 수 없습니다//integers.append(101.1)print(integers) // [1, 100]// 멤버 포함 여부 확인print(integers.contains(100)) // trueprint(integers.contains(99)) // false// 멤버 교체
integers[0] =99// 멤버 삭제
integers.remove(at: 0)
integers.removeLast()
integers.removeAll()
// 멤버 수 확인print(integers.count)
// 인덱스를 벗어나 접근하려면 익셉션 런타임 오류발생//integers[0]
let을 이용하여 Array를 선언하면 불변 Array가 됩니다.
let immutableArray = [1, 2, 3]
// 수정이 불가능한 Array이므로 멤버를 추가하거나 삭제할 수 없습니다//immutableArray.append(4)//immutableArray.removeAll()
Dictionary
-Dictionary는 키 와 값 의 쌍으로 이루어진 컬렉션 타입입니다.
// Key가 String 타입이고 Value가 Any인 빈 Dictionary 생성var anyDictionary: Dictionary<String, Any> = [String: Any]()
// 같은 표현// var anyDictionary: Dictionary <String, Any> = Dictionary<String, Any>()// var anyDictionary: Dictionary <String, Any> = [:]// var anyDictionary: [String: Any] = Dictionary<String, Any>()// var anyDictionary: [String: Any] = [String: Any]()// var anyDictionary: [String: Any] = [:]// var anyDictionary = [String: Any]()
-Dictionary 활용
// 키에 해당하는 값 할당
anyDictionary["someKey"] ="value"
anyDictionary["anotherKey"] =100print(anyDictionary) // ["someKey": "value", "anotherKey": 100]// 키에 해당하는 값 변경
anyDictionary["someKey"] ="dictionary"print(anyDictionary) ["someKey": "dictionary", "anotherKey": 100]
// 키에 해당하는 값 제거
anyDictionary.removeValue(forKey: "anotherKey")
anyDictionary["someKey"] =nilprint(anyDictionary)
-let을 사용하여 Dictionary를 선언하면 불변 Dictionary가 됩니다.
let emptyDictionary: [String: String] = [:]
let initalizedDictionary: [String: String] = ["name": "yagom", "gender": "male"]
// 불변 Dictionary이므로 값 변경 불가//emptyDictionary["key"] = "value"
-키의 해당하는 값을 다른 변수나 상수에 할당하고자 할때는 옵셔널 타입 캐스팅 파트에서 다룹니다.
// "name"이라는 키에 해당하는 값이 없을 수 있으므로 // String 타입의 값이 나올 것이라는 보장이 없습니다.// 컴파일 오류가 발생합니다let someValue: String= initalizedDictionary["name"]
someString ="""
여러줄 문자열을
사용할 수 있습니다.
첫 줄에 겹따옴표 세 개,
마지막 줄에 겹따옴표 세 개를
사용하면 됩니다.
"""
someString ="""
겹따옴표 세 개인 줄(첫줄, 끝줄)에서
줄 바꿈을 하지 않으면 오류가 발생합니다.
"""/*
someString = """오류발생
오류발생"""
*/
생각해보기
let integer =100//정수형 Int Typelet floatingPoint =12.34// 실수형 Double Typelet apple ="A"// Stringprint(type(of: integer)) //Intprint(type(of: floatingPoint)) // Doubleprint(type(of: apple)) //String
Any
-swift의 모든 타입을 지칭하는 키워드
var someAny: Any=100
someAny ="어떤 타입도 수용 가능합니다"
someAny =123.12
Any 타입에 Double 자료를 넣어두었더라도 Any는 Double 타입이 아니기 때문에 할당할 수 없습니다.
명시적으로 타입을 변환해 주어야 합니다.
타입 변환은 차후에~
let someDouble: Double= someAny // 컴파일 오류발생
AnyObject
모든 클래스 타입을 지칭하는 프로토콜(클래스와 프로토콜은 차후에~)
classSomeClass{}
var someAnyObject: AnyObject=SomeClass()
AnyObject는 클래스의 인스턴스만 수용 가능하기 때문에 클래스의 인스턴스가 아니면 할당할 수 없습니다.
someAnyObject =123.12// 컴파일 오류발생
nil
없음을 의미하는 키워드
다른 언어의 NULL, Null, null 등과 유사한 표현입니다.
아래 코드에서 someAny는 Any타입이고, someAnyObject는 AnyObject타입 이기 때문에
let constant: String="차후에 변경이 불가능한 상수 let"//immutablevar variable: String="차후에 변경이 가능한 변수 var"//mutable
variable ="변수는 이렇게 차후에 다른 값을 할당할 수 있지만"// constant = "상수는 차후에 값을 변경할 수 없습니다" // 오류발생
상수 선언 후 값 할당하기
-> 나중에 할당하려는 상수나 변수는 타입을 꼭 명시해주어야 합니다.
let sum: Intlet inputA: Int=100let inputB: Int=200// 선언 후 첫 할당
sum = inputA + inputB
// sum = 1 // 그 이후에는 다시 값을 바꿀 수 없습니다, 오류발생// 변수도 물론 차후에 할당하는 것이 가능합니다var nickName: String
nickName ="Smith"// 변수는 차후에 다시 다른 값을 할당해도 문제가 없지요
nickName ="스미스"
생각해보기
let name ="smith"//이름은 바뀌지 않으니 상수var numberToAdd =5//더하려는 숫자는 바뀔수 있으니 숫자??let pi =3.14195//파이는 상수let maxItemCount =1000// 최대 아이탬개수는 상수