728x90
https://yagom.net/courses/swift-basic/
기초 개념
Naming Rule (이름짓기 규칙)
lowerCamelCase
- Function
- method
- variable
- constant
UpperCamelCase
- Type(class, struct, enum, extension)
콘솔로그
- print: 단순 문자열 출력
- dump: 인스턴스의 자세한 설명(description)까지 출력
String Interpolation (문자열 보간법)
- \() : 프로그램 실행 중 문자열 내 변수 또는 상수의 실질적인 값을 표현하기 위해 사용
- ex) print(“Hello \(name)!”)
상수와 변수
let: 상수 선언. 변경 불가능
- let name: String = “dg”
- let name = “dg”
- let name: String - 명시하면 추후에 한번 선언가능
var: 변수 선언. 변경 가능
- var age: Int = 28
- var age = 28
기본데이터 타입
Bool: true, false
- 0, 1로 표현하면 에러
Int, UInt: 64bit 정수형 타입
- 실수 타입을 넣으면 에러
- UInt에 음수를 넣으면 에러
Float: 32bit 부동소수형 실수
Double: 64bit 부동소수형 실수
Character: 문자타입, 유니코드 사용, 큰따옴표 사용
- 문자열 입력시 에러
String: 문자열 타입, 유니코드 사용, 큰따옴표 사용
- 여러 문자열은 큰따옴표 세개사용
- “””이 들어가는 줄은 줄바꿈 필요함
Any, AnyObject, nill
Any: Swift의 모든 타입을 지칭하는 키워드
- 다른 타입으로 할당하려면 명시적인 변환 필요
AnyObject: 모든 클래스 타입을 지칭하는 프로토콜
- 클래스의 인스턴스가 아니면 에러
nil: 없음을 의미하는 키워드
- Any, AnyObject에 nil을 할당할수 없음
컬렉션 타입
Array: 리스트 컬렉션
- 선언, 생성은 여러 표현방법이 있음
- method
- append
- contains → Bool
- remove(at: i), removeLast, removeAll
- count
- let을 사용해서 선언하면 불변 array가 됨
Dictionary: 키, 값 쌍으로 이루어진 컬렉션
- 선언시 키, 값의 데이터 타입을 명시해야함
- var anyDict: Dictionary <String, Any> = Dictionary<String, Any>()
- 이외에도 여러 표현 방법이 있음
- method
- removeValue
- 마찬가지로 let을 사용하면 불변 딕셔너리가 됨
- 키에 해당하는 값을 다른 변수나 상수에 할당하고자 할때 컴파일 오류가 발생할수 있음 → 옵셔널, 타입 캐스팅 필요
Set: 순서는 없지만 중복되는 값이 없는 컬렉션
- 선언
- var integerSet: Set<int> = Set<Int>()
- method
- insert
- contains → Bool
- remove, removeFirst
- count
- 집합연산 사용 가능
- setA.union(setB)
- setA.intersection(setB)
- setA.subtracting(setB)
함수
함수의 기본 형태
func name(param1: type1, param2: type2) → returnType {
//expression
return returnValue
}
- parameter가 없는경우 Void 명시 안함. func ex1() → Int { return 1 }
- Return value가 없는 경우 return type에 Void 명시하지 않아도됨. func ex2() { print("example 2") }
함수 호출
func sum(a: Int, b: Int) -> Int {
return a + b
}
sum(a:3, b:5)
매개변수 기본값 (default parameter)
- 기본값을 갖는 매개변수는 뒤쪽에 위치하는 것이 좋음
func ex3(friend: String, greeting: String = "Hello") {
print("\(greeting), \(friend)!")
}
ex3(friend: "world") // Hello, world!
전달인자 레이블
- 함수를 호출할때 사용자의 입장에서 매개변수의 역할을 좀더 명확하게 표현하고자 할때 사용
- 내부에서는 매개변수 이름(friend, me)으로 사용하고, 외부에서는 전달 인자 레이블(to, from)로 사용함
- parameter 랑 argument의 차이인듯
func 함수이름(전달인자레이블 매개변수1이름: 매개변수1타입, 전달인자레이블 매개변수2이름: 매개변수2타입 ...) -> 반환타입 {
/* 함수 구현부 */
return
}
// 함수 내부에서 전달인자를 사용할 때에는 매개변수 이름을 사용합니다
func greeting(to friend: String, from me: String) {
print("Hello \\(friend)! I'm \\(me)")
}
// 함수를 호출할 때에는 전달인자 레이블을 사용해야 합니다
greeting(to: "world", from: "dg") // Hello world! I'm dg
가변 매개변수
func 함수이름(매개변수1이름: 매개변수1타입, 전달인자 레이블 매개변수2이름: 매개변수2타입...) -> 반환타입 {
/* 함수 구현부 */
return
}
func sayHelloFriends(me: String, friends: String...) -> String {
return "Hello \(friends)! I'm \(me)!"
}
print(sayHelloToFriends(me: "dg", friends: "world", "war", "waldo"))
// Hello ["world", "war", "waldo"]! I'm dg!
print(sayHelloToFriends(me: "dg"))
// Hello []! I'm dg!
데이터 타입으로서의 함수
- 함수형 프로그래밍 패러다임
- 스위프트의 함수는 일급객체
- 함수를 변수, 상수 등에 할당이 가능
- 매개변수를 통해 전달할 수도 있습니다
'STUDY > Swift & iOS' 카테고리의 다른 글
Swift 문법 기초 6 (0) | 2022.06.25 |
---|---|
Swift 문법 기초 5 (0) | 2022.06.21 |
Swift 문법 기초 4 (0) | 2022.06.20 |
Swift 문법 기초 3 (0) | 2022.06.13 |
Swift 문법 기초 2 (0) | 2022.06.09 |