** edwith - Swift 프로그래밍 입문 강의 참고**
# 콘솔로그 #
print 단순 문자열 출력
dump 인스턴스의 자세한 설명(description property)까지 출력
# 문자열 보간법 #
프로그램 실행 중 문자열 내에 변수 또는 상수의 실질적인 값을 표현하기 위해 사용
// 예시
import Swift
let a: Int = 2
let b: Int = 3
print("a와 b의 합은 \(a+b)이다.") // => output : "a와 b의 합은 5이다."
# 상수, 변수의 선언 #
상수 선언 키워드 : let => let 이름: 타입 = 값
▪️(값의 타입이 명확한 경우, 타입 생략 가능 => let 이름 = 값)
▪️let은 constant (상수) 값이므로, 차후에 변경이 불가능함.
▪️타입 선언만 하고 차후에 값 할당 가능. 대신 한 번 할당 한 후에는 값 변경 불가능.
변수 선언 키워드 : var => var 이름: 타입 = 값
▪️(값의 타입이 명확한 경우, 타입 생략 가능 => var 이름 = 값)
▪️var은 variable(변수) 값이므로, 차후에 변경이 가능함.
▪️타입 선언만 하고 차후에 값 할당 가능. 한 번 할당 한 후에도 값 변경 가능.
# Any, AnyObject, nil #
Any : Swift의 모든 타입을 지칭하는 키워드
AnyObject : 모든 클래스 타입을 지칭하는 프로토콜
nil : null. 없음을 의미하는 키워드
// Any
var someAny: Any
someAny = 100
someAny = "어떤 타입이든 선언 가능"
someAny = 12.12
// AnyObject
class SomeClass {}
var someAnyObject: AnyObject = SomeClass()
// nil
// 위의 someAny와 SomeClass에는 nil을 할당할 수 없습니다.
# 컬렉션 타입 #
Array : 순서가 있는 리스트 컬렉션
// Array 선언 및 생성
var arrayName: Array<Int> = Array<Int>()
var arrayName: Array<Int> = [Int]()
var arrayName: [Int] = Array<Int>()
var arrayName: [Int] = [Int]()
var arrayName: [Int] = []
var arrayName = [Int]()
let constName = [1,2,3] // 수정이 불가능 하므로 멤버를 추가하거나 삭제할 수 없음.
// Array 활용
arrayName.append(1)
arrayName.append(100)
arrayName.append(80)
arrayName.append(20)
print(arrayName) // [1, 100, 80, 20]
print(arrayName.contains(100)) // true
arrayName[0] = 99 // [99, 100, 80, 20]
arrayName.remove(at: 0) // [100, 80, 20]
arrayName.removeLast() // [100, 80]
arrayName.removeAll() // []
print(arrayName.count) // 0
Dictionary : 'key'와 'value'의 쌍으로 이루어진 컬렉션
// Dictionary의 선언과 생성 => key가 String타입이고, value가 Any인 빈 Dictionary 생성
var anyDictionary: Dictionary<String, Any> = [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]()
let emptyDictionary: [String: String] = [:]
let initializedDictionary: [String: String] = ["name": "kim", "gender": "female"]
// Dictionary 활용
anyDictionary["someKey"] = "value"
anyDictionary["anotherKey"] = 100
print(anyDictionary) // ["someKey": "value", "anotherKey": 100]
anyDictionary.removeValue(forKey: "anotherKey")
anyDictionary["someKey"] = nil
Set : 순서가 없고, 멤버가 유일한 컬렉션
// Set 생성 및 선언
var someSet: Set<Int> = Set<Int>()
someSet.insert(1)
someSet.insert(3)
someSet.insert(3) // 같은 값을 중복으로 insert해도 한 번만 저장 됨.
someSet.insert(3)
someSet.insert(100)
// Set 활용
print(someSet) // {100, 3, 1}
print(someSet.contains(3)) // true
print(someSet.count) // 3
someSet.removeFirst() // {3, 1}
someSet.remove(1) // {3}
// 멤버의 유일성이 보장되기 때문에 집합 연산 활용 유용
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) // 합집합 : [2,4,5,6,7,3,1]
let sortedUnion: [Int] = union.sorted() // 합집합 오름차순 정렬 : [1,2,3,4,5,6,7]
let intersection: Set<Int> = setA.intersection(setB) // 교집합 : [5,3,4]
let subtraction: Set<Int> = setA.subtracting(setB) // 차집합 : [2,1]
# 함수 기본 #
func 함수이름(매개변수이름: 매개변수타입 = 매개변수기본값, 매개변수이름: 매개변수타입 ...) -> 반환타입 {
// 함수 구현
return 반환값
}
/* 예시 */
func sum(a: Int, b: Int = 3) -> Int {
return a+b
}
sum(a: "2") // 5
반환값이 없을 경우 Void 로 지정하거나, '-> Void' 생략 가능
func hello() {
print("hello")
return // 생략 가능
}
// 가변 매개변수 예시 //
func sayHello(me: String, friends: String...) -> String {
return "Hello \(friends)! I'm \(me)!!"
}
print(sayHello(me: "kim", friends: "lee", "park", "song"))
// Hello ["lee", "park", "song"]! I'm kim!!
print(sayHello(me: "kim"))
// Hello []! I'm kim!!
# 함수 활용 #
// 변수 자체에 함수 선언
var someFunction: (String, String) -> String = sayHello(friend:me:)
print(someFunction("lee", "kim")) // Hello lee! I'm kim!!
// function 자체에 데이터를 먼저 넣어서, 다른 함수를 실행
func otherFunction(function: (String, String) -> Void) {
function("lee", "kim")
}
print(otherFunction(function: someFunction)) // Hello lee! I'm kim!!
'iOS > Swift' 카테고리의 다른 글
Swift-3. 구조체, 열거형 (0) | 2023.02.24 |
---|---|
Swift-2. 반복문, 옵셔널/옵셔널체이닝/옵셔널바인딩 (0) | 2023.02.24 |
[Swift 5.5] Async / Await (0) | 2021.12.20 |
Swift 접근 제어자 (Access Control) (0) | 2021.05.07 |
Struct와 Class, Closure (0) | 2020.12.24 |
댓글