티스토리 뷰
지금부터 Swift 문법을 이해하기 위한 기본 개념들을 익히고자 합니다.
1. Token
언어를 구성하는 다양한 요소 중 가장 작은 단위를 의미하며 ,(Comma) 또는 공백으로 구분할 수 없는 요소를 말합니다.
종류를 살펴보면 다음과 같습니다.
- Identifiers- Identifiers(식별자)
- Keywords(키워드)
- Punctuations(구두점)
- Operators(연산자)
- Literals(리터럴)
간단한 예를 들면 if 라는 키워드의 경우 i f 또는 i,f 등으로 구분하여 사용할 수 없으므로 if 자체가 하나의 의미를 가지는 토큰이라고 할 수 있습니다.
위 토큰 중 Literal, Identifiers, Keywords 에 대해 좀 더 살펴보겠습니다.
먼저, Literal 은 코드 내에서 의미가 변하지 않고 있는 그대로 사용되는 값을 말합니다.
종류를 살펴보면 다음과 같습니다.
- Integer Literals
- Floating-point Literals
- String Literals
- Boolean Literals
- nil Literals
Identifiers 는 식별자라고 부르며, 코드에 포함된 요소를 구별하는데 사용되는 이름을 말합니다. (ex) 변수명 등)
이런 식별자는 영어(대, 소문자), _, 숫자 등으로 이루어지며 숫자는 이름에 맨 앞에 올 수 없습니다.
마지막으로 Keywords 는 프로그래밍 언어가 제공하는 기능을 위해 예약되어 있는 단어로 "예약어"라고 부릅니다. 이런 Keywords 들은 식별자로써 사용이 불가능합니다.
let x = 7
// Literal = 7
// Identifiers = x
// Keywords = let
2. Expressions
각 변수, 연산자, 함수 같은 것들이 하나 이상 모여 하나의 값으로 표현되는 코드를 의미하며 "표현식"이라고 부릅니다.
이런 코드를 실행하여 결과를 얻는 것을 코드를 "평가한다.(Evaluate)" 라고도 합니다.
간단한 표현식 예를 살펴보면 다음과 같습니다.
- 산술 표현식(Arthmetic Expressions) -> x + 7
: 산술 연산을 통해 결과가 나오는 표현식
- 논리 표현식(Boolean Expressions) -> x < 10
: 참, 거짓으로 결과가 나오는 표현식
3. Statements
하나 이상의 표현식이 모여 특정 작업을 수행하는 코드를 의미하여 "문장 또는 문"이라고 부릅니다.
Swift에서는 문장의 끝을 자동으로 인식하기 때문에 다른 언어에서 많이 사용하는 문장 끝에 ; (Semicolon)은 생략이 가능합니다.
종류는 다음과 같습니다.
- if: 조건에 따라 실행할 코드를 지정
- switch
- guard
- for-in: 반복 실행문
- while
4. Compile, Link, Run
코드를 작성하고 실행하는 과정에 대해 살펴보겠습니다.
Compile 이란, 사람이 이해할 수 있는 프로그래밍 언어로 작성된 코드를 바이너리 코드로 변환하는 작업을 의미합니다.
이런 Compile 과정에서 문제가 발생하는 경우 Complier 는 두 가지 종류의 에러를 발생시킵니다.
- warning: 프로그램 실행 자체에 문제는 없지만 논리적인 에러가 생길 수 있는 문제
- Error: 바이너리 코드 생성이 안되며 당연히 실행도 되지 않는 에러
Link 는 바이너리 파일이 만들어진 다음 해당 코드와 관련된 Framework, 라이브러리 등을 연결하는 작업을 의미합니다. 이 작업은 통합 개발 툴(IDE)인 Xcode를 통해 자동으로 수행됩니다.
위 과정을 거친 후 실행 파일을 만들 수 있게 되는데 실행 파일은 2가지 경우로 나눠서 생성할 수 있습니다.
- Debug Mode
: 개발 과정에서 실행 파일에 오류를 찾는데 필요한 정보(Debug Infomation)을 포함한 실행 파일 생성
- Release Mode
: 실행파일이 작고 최적화를 해 실행 속도도 빠름(앱 스토어 출시용)
5. Special Characters
특수 문자들이 Swift 에서 주로 어떻게 사용되는지 간단하게 정리해 보았습니다.
특수 문자 | 영문명 | 주 용도 |
! | Exclamation Mark | - 논리를 부정하는데 사용됨 (참 -> 거짓, 거짓 -> 참) - 옵셔널에서는 저장되어 있는 값을 강제로 꺼내는 의미 |
~ | Tilde | 비트 연산자에서 사용됨 |
` | Grave Accent / Back Tick | 키워드를 Identifier로 바꾸는 문법에서 사용됨 |
@ | At Symbol | 코드 자체의 특성을 지정하는 용도로 사용 |
# | Sharp / Pound / Hashtag | 스위프트가 제공하는 특별한 문법이 다 #으로 시작함 |
$ | Dollar Sign | 클로저에서 파라미터 이름을 대체할 때 주로 사용 |
% | Percent Sign | 주로 나머지를 구할 때 사용 |
^ | Caret | 비트 연산에서 사용됨 |
& | Ampersand | 메모리 주소를 얻거나, 참조를 전달할 때 사용 |
* | Asterisk | 곱하기 연산에서 사용 |
() | Parentheses | 함수 호출, 계산 순서 지정 등에 사용 |
- | Minus Sign / Hyphen | 빼기 연산에서 사용 |
_ | Underscore | 와일드 카드 패턴을 구현할 때 자주 사용 |
= | Equal Sign | 변수나 상수에 값을 저장할 때 사용, == 두 값을 비교 |
+ | Plus Sign | 덧셈에 사용 |
[] | Square Bracket | 주로 컬렉션에 저장된 값에 접근할 때 사용 |
{} | Curly Bracket / Brace | 코드 블록의 범위를 지정할 때 주로 사용 |
\ | Backslash | 스트링 인터폴레이션 문법이나 키 패스 표현식에서 사용됨 |
| | Vertical Bar / Pipe | 옵션 열거에 사용 (과거), 주로 논리 연산이나 비트 연산에 사용됨 |
; | Semicolon | 문장 끝에 사용 (생략해서 주로 사용 안함) |
: | Colon | 자료형 지정, 딕셔너리에서 키와 값을 구분하는데도 사용 |
, | Comma | 함수, 배열로 전달되는 값을 나열할 때 사용 |
. | Period | 메소드를 호출하거나 속성에 접근할 때 사용 |
<> | Angle Bracket | 크기를 비교하는 연산자, 제네릭에서는 형식 파라미터를 지정할 때 사용 |
/ | Slash | 주로 경로 지정에 사용됨 |
? | Question Mark | 옵셔널에서 주로 사용 |
6. First Class Citizen
이번 글에서는 First Class Citizen 이라는 용어가 있다는 것과 특징 정도만 알고 넘어가겠습니다.
특징은 다음과 같습니다.
- can be stored in variables and data structures
상수와 변수에 저장할 수 있다.
- can be passed as a parameter to a function
함수의 파라미터로 전달할 수 있다.
- can be returned as the result of a function
함수의 결과 값으로 반환될 수 있다.
지금까지 Swift 문법 이해를 위한 기초적인 개념들에 대해 정리해보았습니다.
'swift > 문법' 카테고리의 다른 글
05. Swift 문법 - Loop Statements (0) | 2020.10.11 |
---|---|
04. Swift 문법 - Conditional Statements (0) | 2020.10.11 |
03. Swift 문법 - Operators (0) | 2020.10.10 |
02. Swift 문법 - Literals, Data Types (0) | 2020.10.09 |
01. Swift 문법 - Variables and Constants, Scope (0) | 2020.10.08 |
- Total
- Today
- Yesterday
- Baekjoon
- map
- sort
- EC2
- array
- Algorithm
- CodeDeploy
- search
- 소수
- ionic
- ECR
- spring
- programmers
- string
- cloudfront
- DFS
- 수학
- 프로그래머스
- BFS
- AWS
- permutation
- 에라토스테네스의 체
- CodePipeline
- SWIFT
- CodeCommit
- Dynamic Programming
- 순열
- java
- 조합
- Combination
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |