티스토리 뷰
본 문서는 애플의 공식홈페이지 메뉴얼(원문)을 번역한 내용입니다.
A Swift Tour
새로운 프로그래밍 언어를 배울때는 전통적으로 "Hello world!"로 시작한다. 스위프트에선 다음과 같이 한다.
print("Hello, world!")
C나 Objective-C를 사용해본 개발자라면 스위프트의 문법구조는 친숙할 것이다. 입출력이나 문자열을 다루는 것과 같은 기능을 위해 라이브러리를 추가할 필요가 없다. 전역 스코프에 쓰여진 코드는 프로그램의 시작 지점으로 사용되므로, main함수가 필요하지 않다. 또한 모든 라인의 마지막에는 세미콜론도 필요없다.
이 투어는 다양한 프로그래밍 테스크들을 수행하는 방법을 알려줌으로써 스위프트로 코드 작성을 시작하기 위한 충분한 정보를 제공한다. 만약 일부 이해가 안되는 것들이 있더라도 걱정할 필요 없다. 투어에서 소개된 모든 것은 이 책의 나머지 부분에서 자세히 설명할 것이다.
노트
최고의 경험을 위해서 Xcode에서 playground로 현재 챕터를 실행해보자. playground에서는 코드를 수정할 수 있고, 결과를 즉시 볼 수 있다.
단순한 값 (Simple Value)
let은 상수를 위한 키워드이고, var는 변수를 위한 키워드이다. 상수값은 컴파일 타임에 알 필요가 없다. 하지만 정확하게 한 번 값을 할당해야 한다. 이 의미는 한 번 결정된 값은 불변하다는 뜻이지만 여러 군데에서 쓰일 수는 있다.
var myVariable = 42
myVariable = 50
let myConstant = 42
상수나 변수는 반드시 선언 시에 할당한 값과 같은 타입이어야 하지만 항상 타입을 명시적으로 써주어야 할 필요는 없다. 변수가 선언될 때 타입 정보는 컴파일러에게 전달된다. 위의 예제에서 myVariable은 초기값이 정수이기 때문에, 정수형으로 선언된다.
만약 초기값에 대해 타입에 대한 충분한 정보가 없거나 초기 값을 할당되지 않았다면, 변수 뒤에 콜론을 사용하여 타입을 명시해주어야 한다.
let implicitInteger = 70
let implicitDouble = 70.0
let explicitDouble: Double = 70
실험
4의 값을 가지는 float형 상수를 만들어 보자.
값은 절대 암묵적인 형변환이 되지 않는다. 만약 형변환이 필요하다면, 원하는 타입으로 명시적인 변환을 해야 한다.
let label = "The width is "
let width = 94
let widthLabel = label + String(width)
실험
위 예제의 마지막 라인에서 String을 제거해보자. 무슨 에러가 나는가?
문자열에서 값을 사용하려면 역슬래시(\)와 괄호로 값을 묶어야 한다. 다음 예제를 보자.
let apples = 3
let oranges = 5
let appleSummary = "I have \(apples) apples."
let fruitSummary = "I have \(apples + oranges) pieces of fruit."
실험
\()를 사용해서 문자열 안에서 소수점연산(floating-point)을 해보자. 그리고 인사말안에 사람의 이름을 넣어보자.
중괄호([])로 배열과 딕셔너리를 만들 수 있다. 그리고 인덱스나 키값을 사용해서 엘리먼트에 접근할 수 있다. 마지막 엘리먼트 뒤에 콤마도 허용된다.
var shoppingList = ["catfish", "water", "tulips", "blue paint"]
shoppingList[1] = "bottle of water"
var occupations = [
"Malcolm": "Captain",
"Kaylee": "Mechanic",
]
occupations["Jayne"] = "Public Relations"
빈 배열이나 빈 딕셔너리를 만들기 위해서는 초기화 문법을 사용해야 한다.
let emptyArray = [String]()
let emptyDictionary = [String: Float]()
만약 타입정보가 추론가능하다면, [], [:] 형식을 사용해서 각각 빈 배열과 빈 딕셔너리를 만들 수 있다. 예를 들어, 변수의 값을 지정했거나, 함수의 아규먼트를 전달한 상황이다.
shoppingList = []
occupations = [:]
제어 구문(Control Flow)
조건 구문을 만들기 위해서는 if나 switch를 사용한다. 그리고 반복 구문에는 for-in, for, while, repeat-while이 사용된다. 조건이나 루프변수를 둘러쌓는 소괄호(())는 선택사항이다. 몸체를 둘러쌓는 중괄호({})는 필요하다.
let individualScores = [75, 43, 103, 87, 12]
var teamScore = 0
for score in individualScores {
if score > 50 {
teamScore += 3
} else {
teamScore += 1
}
}
print(teamScore)
if절에서 조건은 반드시 불린(Boolean) 표현이어야 한다. 이 말은 if score { ... } 같은 코드는 에러라는 뜻이며, 0을 이용한 암시적인 비교 또한 허용되지 않는다는 의미이다.
if와 let을 함께 사용해서 없었던 값을 만들 수 있다. 그리고 옵셔널(optional)로 표현되는 값들이 있다. 옵셔널 값은 값이 없는 경우에 nil을 포함할 수 있도록 하는 값이다. 값의 타입 뒤에 물음표(?)를 사용하여 옵셔널 값임을 나타낼 수 있다.
var optionalString: String? = "Hello"
print(optionalString == nil)
var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {
greeting = "Hello, \(name)"
실험
optionalName을 nil로 변경해 보자. 어떤 인사말이 출력되는가? optionalName이 nil 인 경우에 다른 인사말이 출력되도록 else절을 추가해보자.
옵셔널 값이 nil일 때, 조건 구문은 false이고, 해당 코드는 수행되지 않는다. 반면에 옵셔널 값이
'Swift' 카테고리의 다른 글
[번역] Welcome to Swift - About Swift (Swift3) (0) | 2016.08.23 |
---|---|
Swift3 시작하기 (0) | 2016.08.22 |
- Total
- Today
- Yesterday
- Angular
- 안시 컬러
- 스위프트
- 폰트 조정
- vim
- ZONES
- lua table
- 안시 색상
- observable
- ansi color
- JavaScript
- git 설정
- NgZone
- zone
- qemu linux arm
- 챗봇
- typeScript
- Zone.js
- 우분투 16.04
- C언어
- terminal 색
- Rx.js
- QT
- git proxy
- 타입스크립트
- angular2
- Swift
- itoa
- 리눅스 터미널 색상
- ECMA2015
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |