반응형
1. 명명법
- 기본적으로 swift는 모든 대소문자를 구분한다.
- Lower Camel Case : 함수, 메소드, 변수, 상수
- Upper Camel Case : 타입 ( 클래스, 구조체, ... )
2. 상수와 변수 선언
let : 상수 선언 키워드
var : 변수 선언 키워드
let name : String = "MyName" //상수
var age : Int = 24 //변수
print("name: \(name)")
print("age: \(age)")
age = 28 //변수는 변경 가능
print("age: \(age)")
name = "NewName" //상수는 변경 불가! - 에러 발생
3. 기본 데이터 타입
1) 기본 데이터 타입
- Bool
- Int, UInt
- Float, Double
- Character, String
2) Bool
true와 false만 값으로 가질 수 있음
var tempBool : Bool = true
var varBool = false // : Bool 생략 가능
tempBool = false
tempBool = 1 //오류 발생
tempBool = 3 //오류 발생
varBool = true
varBool = 0 //오류 발생
3) Int
정수만 값으로 가질 수 있음
var tempInt : Int = 3
var varInt = 5 // : Int 생략 가능
tempInt = -3
tempInt = 3.14 //오류 발생
varInt = -5
varInt = 5.2 //오류 발생
4) Float, Double
Float : 실수 타입이며 32비트 부동소수형
Double : 실수 타입이며 64비트 부동소수형
: Type부분을 생략하는 경우엔 소수를 넣어주면 자동으로 double형으로!
var tempFloat : Float = 3.14
tempFloat = 3
var tempDouble : Double = 12.9
tempDouble = 12
tempFloat = tempDouble //오류 발생
tempDouble = tempFloat //오류 발생
var tempVar = 3.14
tempVar = tempFloat //오류 발생
tempVar = tempDouble
5) Character, String
Character : 문자 타입이며 큰따옴표("") 사용
String : 문자열 타입이며 큰따옴표("") 사용
var tempChar : Character = "A"
tempChar = "ABC" //오류 발생
var tempString : String = "Hello World!"
tempString = tempString + " Hi!"
6) nill
다른 언어의 NULL, Null과 유사
4. 컬렉션 타입
1) 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]()
var arrTemp = ["A", "B", "C", "D", "E"]
print(arrTemp[0]) // "A"
print(arrTemp) // ["A", "B", "C", "D", "E"]
print(arrTemp[2...]) // ["C", "D", "E"]
print(arrTemp[1...3]) // ["B", "C", "D"]
// 인자 수 확인
print(arrTemp.count) // 인자 개수 : 5
// 인자 교체
arrTemp[2] = "Z"
print(arrTemp) // ["A", "B", "Z", "D", "E"]
// 인자 추가
arrTemp.append("F")
print(arrTemp) // ["A", "B", "C", "D", "E", "F"]
print(arrTemp.count) // 인자 개수 : 6
// 포함 여부 확인
print(arrTemp.contains("A")) // true
print(arrTemp.contains("H")) // false
2) Dictionary
- '키'와 '값'의 쌍으로 이루어진 컬렉션 타입
아래의 출력 결과를 보면 알 수있듯, 순서가 없음
var dictTemp = ["key1": "value1", "key2": "value2", "key3": "value3"]
// 여러 가지 선언 방법
// 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]()
print(dictTemp) // ["key3": "value3", "key1": "value1", "key2": "value2"]
// 키만 가져오기
print(dictTemp.keys) // ["key2", "key3", "key1"]
// 값만 가져오기
print(dictTemp.values) // ["value2", "value1", "value3"]
//키에 해당하는 값 변경
dictTemp["key1"] = "value5"
print(dictTemp) // ["key3": "value3", "key1": "value5", "key2": "value2"]
// 키에 해당하는 값 제거
dictTemp.removeValue(forKey: "key1")
dictTemp["key2"] = nil
print(dictTemp) // ["key3": "value3"]
//키와 값 추가
dictTemp["key4"] = "value 4"
print(dictTemp) //["key3": "value3", "key4": "value 4"]
3) Set
- 중복되지 않는 멤버가 순서없이 존재하는 컬렉션
var setTemp : Set = ["Apple", "Banana", "Peach", "Melon"]
//원소 추가
setTemp.insert("Orange")
print(setTemp) // ["Peach", "Orange", "Apple", "Melon", "Banana"]
//포함 여부 확인
print(setTemp.contains("Apple")) // true
print(setTemp.contains("Lemon")) // false
//원소 개수
print(setTemp.count) // 5
//원소 삭제
setTemp.remove("Melon")
print(setTemp) // ["Apple", "Peach", "Banana", "Orange"]
print(setTemp.count) // 4
집합 연산
let setA: Set<Int> = [1, 2, 3, 4, 5]
let setB: Set<Int> = [3, 4, 5, 6, 7]
// 합집합
let union: Set<Int> = setA.union(setB)
print(union) // [2, 4, 5, 6, 7, 3, 1]
// 합집합 오름차순 정렬
let sortedUnion: [Int] = union.sorted()
print(sortedUnion) // [1, 2, 3, 4, 5, 6, 7]
// 교집합
let intersection: Set<Int> = setA.intersection(setB)
print(intersection) // [5, 3, 4]
// 차집합
let subtracting: Set<Int> = setA.subtracting(setB)
print(subtracting) // [2, 1]
boostcourse의 <iOS 프로그래밍을 위한 스위프트 기초> 강의를 바탕으로 작성하였습니다.
728x90
반응형
'swift - iOS' 카테고리의 다른 글
[swift] 기본 문법 : 옵셔널 (0) | 2021.06.05 |
---|---|
[swift] 기본 문법 : 함수 (0) | 2021.06.05 |