티스토리 뷰
반응형
Swift Basic
명명법 / 콘솔로그 / 문자열 보간법
1. 명명법
- Upper Camel Case: type(class, struct, enum, extension) 등
- Lower Camel Case: 그 외(function method, variable, constant)
2. 콘솔로그 남기기
- print 함수: 단순 문자열 출력
- dump 함수: 자세한 설명까지 출력
3. 문자열 보간법(String Interpolation)
- \(변수 또는 상수)를 문자열에 삽입하여 바로 출력 가능
상수와 변수
1. 상수와 변수 선언
- let: 차후 변하지 않는 값(상수)를 선언할 때 사용
- var: 차후 변하는 값(변수)를 선언할 때 사용
기본 데이터 타입
1. Bool
- true / false값을 가지는 값
2. Int, UInt
- Int; 부호를 가지는(Signed) 정수 타입으로 기본적으로 64비트 정수형
- Uint: 부호를 갖지 않는(Unsigned) 정수 타입으로 기본적으로 64비트 양의 정수형
3. Float, Double
- Float: 32비트 부동소수형 실수타입
- Double: 64비트 부동소수형 실수타입
소수점 표현 방식
- 컴퓨터가 실수를 표현할 때에는 2진수를 사용한다. 예를 들어, 0.75의 경우 0.5+0.25 이므로 이진법으로 0.11로 표현 가능하다. 하지만 263.3이나 0.3 같은 경우는 2진수로 표현 할 수 없고, 이런 경우 컴퓨터에서 표현할 수 있는 방법에는 두가지가 있다. 부동 소수점을 표현하는 방식도 정하는 방식에 따라 다를 수 있지만 일반적으로 IEEE에서 표준으로 제안한 방식을 따른다.
- 부동소수점(floating point): 0.001234 * 10^20.1234 * 10^0이 때, 10진법이므로 고정되어있는 10 부분을 기수, 10의 거듭제곱을 나타내는 수를 지수, 앞에 소수부를 가수라고 부른다. 위의 표현 방식처럼, 소수점의 위치가 움직이는 것을 ''떠다닌다(floating)'이라고 표현하며 부동 소수점이라고 한다.
- 1.234 * 10^(-1)
- 0.01234 * 10^1
- 0.1234는 여러가지 방식으로 표현 가능하다.
- 고정소수점(fixed point):
- 부동소수점과 다르게 위의 예시에서 0.1234라고 표현, 즉 10진법이지만 10의 거듭제곱으로 표현하는 것이 아니라 0.1234라고 표현하면 소수점이 움직일 방법이 없고 이런 경우를 고정소수점 표현이라고 한다.
4. Character, String
- 문자 타입과 문자열 타입으로 모두 유니코드와 큰 따옴표("")를 사용한다.
Any, AnyObject, nil
- Any
- Any 타입으로 선언된 변수에는 어떤 타입의 데이터든 넣을 수 있다.
- 하지만 예를 들어, Any 타입으로 선언된 변수에 Int값을 넣는다고 Any 타입이 Int로 변환되는 것은 아니므로 그 변수 자체를 다시 Int로 선언된 변수에 할당하는 것은 불가능하다. 즉, let intNumber: Any = 10 을 let target: Int = intNumber로 사용할 순 없다.
let intNumber: Any = 10 let target: Int = intNumber (compile error 발생)
- AnyObject
- Any의 경우 모든 타입으로 선언된 변수를 담을 수 있고, AnyObject는 어떤 클래스 타입이든 담을 수 있다.
- nil
- 없음을 의미하는 것으로 다른 언어의 null과 같은 역할이다.
- Swift에서는 nil을 변수에 직접 할당할 수 없다.
컬렉션 타입(Array, Dictionary, Set)
- Array
- index를 활용하여 데이터에 접근할 수 있는 리스트 형태의 컬렉션 타입
- 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]()
- 여러가지 리터럴 문법 활용 가능
- 리터럴(Literal): 저장되는 데이터 그 자체를 의미한다. let PI: float = 3.14 의 경우 3.14가 리터럴이 된다.
- Dictionary
- key : value 의 구조로 이루어진 컬렉션 타입
- swift의 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]()
- Set
- 중복이 없고 순서가 없는 컬렉션
- Set은 Array나 Dictionary와 다르게 [], [:] 처럼 축약형으로 정의가 불가능하다.
var integerSet: Set<Int> = Set<Int>()
함수 기본
func 함수이름(매개변수: 매개변수 타입 ...) -> returnType {
/* 함수 구현부 */
return returnValue // 반환값이 존재할 시
}
함수 고급
- parameter에 default값 넣기
func 함수이름(매개변수1이름: 매개변수1타입, 매개변수2이름: 매개변수2타입 = 매개변수 기본값 ...) -> 반환타입 { /* 함수 구현부 */ return 반환값 } func introduce(greeting: String, me: String = "Jay") { print("\(gretting) I'm \(me)") }
- parameter에 label하기
func 함수이름(전달인자 레이블 매개변수1이름: 매개변수1타입, 전달인자 레이블 매개변수2이름: 매개변수2타입 ...) -> 반환타입 { /* 함수 구현부 */ return }
- 입력될 매개변수의 크기가 확정되지 않을 때
func 함수이름(매개변수1이름: 매개변수1타입, 전달인자 레이블 매개변수2이름: 매개변수2타입...) -> 반환타입 { /* 함수 구현부 */ return } func greetToFriends(me: String, friends: String...) -> String { return "Hello \(friends)! I'm \(me)!" // friends는 array로 입력된다. }
- 데이터 타입으로서의 함수
- 일급객체(First-class Object): 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체
- Swift에서 함수는 일급객체이므로 parameter로서 활용될 수 있다.
Reference:
- iOS 프로그래밍을 위한 스위프트 기초 by 야곰
- http://www.tcpschool.com/cpp/cpp_datatype_floatingPointNumber
반응형
'iOS 앱개발 > Swift Basic' 카테고리의 다른 글
[Swift] 프로퍼티(Properties) (0) | 2021.03.23 |
---|---|
[Swift] 열거형(Enum) (0) | 2021.03.23 |
[Swift] Datatype (0) | 2021.03.23 |
[Swift] if let vs guard let (0) | 2021.03.23 |
[Swift] Basic 02 (0) | 2021.03.23 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Brackets#Stacks and Queues#Codility#Python
- 쿼드트리#BOJ#분할정복#Python
- 공유기 설치#BOJ#이분탐색#Python
- N으로 표현#DP#Programmers#Python
- 암호코드#dp#BOJ#Python
- PassingCars#Codility#Python
- 텀 프로젝트#백준알고리즘#Python
- django
- 터틀비치#리콘#xbox#controller
- 배열합치기#분할정복#BOJ#Python
- 리모컨#완전탐색#BOJ#Python
- Triangle#Sorting#Codility#Python
- NumberofDiscIntersections#Codility#Sort#Python
- django#slicing
- 미로 탐색#백준알고리즘#Python
- 날짜 계산#BOJ#완전탐색#Python
- 랜선자르기#이분탐색#BOJ#Python
- 반복수열#백준알고리즘#Python
- 나무자르기#BOJ#이분탐색#Python
- 백준 알고리즘#BackTracking
- filter#isalnum#lower
- 종이자르기#분할정복#BOJ#Python
- 섬의개수#백준알고리즘#Python
- API#lazy#
- Distinct#Codility#Python
- Swift#Tuples#Range
- 파이썬알고리즘인터뷰#4장
- 토마토#백준알고리즘#Python
- 순열사이클#BOJ#Python
- 병든 나이트#BOJ#탐욕법#Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함