티스토리 뷰
애플에서 발행한 공식 swift 학습서인 The Swift Programming Language를 공부 하면서 작성하는 포스팅. 쉬운 개념도 그냥 넘기지 말고 하나하나 곱씹어서 생각해 보면서 공부하자.
swift는 2014년에 애플에서 발표한 프로그래밍 언어이며 컴파일러 언어이다. 기존에 사용하던 objective-c보다 빠르며, xcode에서는 초보자를 위해 인터프리터 처럼 동작하는 playground기능을 제공한다.
변수
기본적인 선언 방법은 c/c++과 많이 다르다. 최신 언어인 만큼 java, scala 같은 언어와 비슷한 것 같다.
// attribute name : type = value
let name: String = "사나"
var age: Int = 24
변수의 선언은 기본적으로 위 틀을 유지한다. 속성에는 변수(var)인지, 상수(let)인지 정의할 수 있고, 상수의 경우 한 번 값을 초기화 한 후에는 변경할 수 없다. 자료형에는 int, float같은 기본 자료형을 사용할 수 있고 class, struct 등 사용자 정의 자료형도 사용할 수 있다. var로 선언했지만 값의 변경이 없을 경우 컴파일러는 warning을 띄운다.
앞으로 swift를 배우면서 가장 헷갈리게 될 부분인데, swift는 컴파일 시점에 정의되는 것들에 대해 모두 생략이 가능하다. 예를 들어 변수 선언의 경우 선언과 동시에 초기화를 한다면 자료형을 명시하지 않아도 된다.
let name = "나연" // name is String
코드가 간결해 보일 수 있지만 이렇게 생략할 수 있는 부분이 너무 많다보니 다른 사람의 코드를 볼 때 코드의 원문을 바로 파악하기 힘들다.
배열
[] 기호를 사용해서 배열을 선언할 수 있다. 자료형은 같지만 연속적인 데이터가 필요할 때 사용한다.
var member: String = ["사나", "나연", "정연"]
// member = ["사나", "나연", "정연"]
c++은 정적 배열의 수를 초기화 하고 런타임 중에 변경할 수 없지만 swift는 가능하다.
member.append("지효")
// member = ["사나", "나연", "정연", "지효"]
자료구조
기본 자료형으로 쓸 수 있는 map 자료구조를 제공한다. 사실 정식 명칭은 Dictionary이다.
var member: [String, Int] = ["사나", 25, "나연", 26, "정연", 25]
print(member["사나"])
// 25
위 map(dictionary)에서 [String, Int] 묶음 하나씩을 tuple이라고 부른다. 데이터베이스의 tuple 같은 개념의 변수라고 생각할 수 있다. 데이터베이스에서 한 tuple이 여러 종류의 값을 가질 수 있듯이 여러 타입의 변수들을 묶어서 하나의 자료형 처럼 사용할 수 있으며 실제 데이터베이스와 주고받거나, 함수에서 반환 값이 여러 개 필요할 때 사용할 수 있다.
var YoungMi: (index: Int, name: String, position: String)
기본적인 문법은 위와 같고 선언과 동시에 초기화 한다면 변수를 선언할 때 처럼 자료형을 생략할 수 있다.
튜플 변수가 담고 있는 각 값에 접근하기 위해서는 배열과 동일하게 인덱스 번호를 사용한다. 단 자료형을 작성하면서 각 자료형에 대해 이름을 명명해 주었다면 이름으로도 접근할 수 있다.
let YoungMi: (Int, String, Int) = (1, "Lead", 27)
print(YoungMi.1) // Lead
let EunJeong: (index: Int, position: String, age: Int)
EunJeong = (2, "Skip", 27)
print(EnnJeong.position) // Skip
tuple에 들어있는 값들을 개별 변수로 저장하고 싶다면 한번에 모든 값을 분할하여 저장할 수 있도록 해주는 문법을 지원한다.
let YoungMi = (1, "Lead", 27)
let (ymIndex, ymPos, ymAge) = YoungMi
// ymIndex = 1
// ymPos = "Lead"
// ymAge = 27
분할 할 변수 목록, 위 포맷에서 () 안에 있는 이름의 수, 자료형은 tuple의 구성과 일치해야 한다.
만약 모든 값이 아니라 특정 값 만 얻어 오고 싶다면 필요없는 값은 _ 로 대체하면 된다. swift에서 _는 이름 없는 변수로 쓰인다.
let (_, justYMPosition, _) = YoungMi
// justYMPosition = "Lead"
'Programming > Swift' 카테고리의 다른 글
Swift Beginner | 함수(1) (0) | 2020.11.18 |
---|---|
Swift Beginner | 반복문 (0) | 2020.11.18 |
Swift Beginner | 조건문 (0) | 2020.11.18 |
Swift Expert | nil이 될 수 있는 변수 optional (0) | 2020.11.18 |
Swift - 인터페이스 (0) | 2018.03.29 |
- Total
- Today
- Yesterday
- 수학
- winsock
- database
- mongoDB
- 알고리즘
- JSP
- 자료구조
- machine learing
- swift
- OS
- game
- C
- SOCKET
- DesignPattern
- ios
- SHADER
- Git
- 드라마
- ue4
- 운영체제
- 데이터베이스
- C++
- SwiftUI
- 국내여행
- Cocos2d-x
- C/C++
- rxswift
- Spring
- Java
- scala
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |