본문 바로가기
iOS/Swift

Swift-1. 변수, 리스트, 함수

by 헤콩 2023. 2. 24.
반응형

** 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

댓글