[Swift 문법] Swift 공식 문서 - 1 - The Basics

9815 단어 swiftswift

The Basics

Swift는 iOS, macOS, watchOS, tcOS를 만들기 위한 새로운 프로그래밍 언어입니다. 기초적인 자료형으로는 Int, Double, Float, Bool, String, Array, Set, Dictionary가 있습니다. Swift는 값을 저장하고 참조하기 위해 변수를 사용하고 이름으로 변수를 구분합니다. Swift에는 변수 중에서도 값을 변경할 수 없는 Constant(상수)를 제공합니다. Swift에는 Objective-c 에서는 볼 수 없는 tuple(튜플) 형식도 제공합니다. 튜플을 사용해서 여러 값을 하나의 값으로 반환할 수도 있습니다. Swift에서는 Optional Type(옵셔널 타입)을 제공하는데, 이는 값이 없을 때는 제어할 수 있습니다. 만약 값이 있다면 값을, 값이 없다면 nil을 사용합니다. 이는 클래스뿐만 아니고 모든 유형에 대해 사용할 수 있습니다. Swift는 type-safe 언어입니다. 즉 사용자가 잘못된 자료형을 사용하면 경고를 줘서 인지하게 해 줍니다. 이는 옵셔널 타입에도 적용됩니다. 예를 들어 일반 String 변수에 옵셔널 String 변수를 사용하려고 하면 오류를 발생시킵니다.


Constants and Variables(상수와 변수)

상수는 한 번 정의되면 값이 절대로 변하지 않는 값을 말하며 변수는 값이 변할 수 있는 값입니다. 상수는 let으로 선언되며 변수는 var로 선언할 수 있습니다.

Declaring Constants and Variables(상수와 변수의 선언)

let maximumNumberOfLoginAttempts = 10
var currentLoginAttemp = 0

위의 코드처럼 상수, 변수를 선언할 수 있습니다.

var x = 0.0, y = 0.0, z = 0.0

위의 코드처럼 여러 상수나 변수를 한 줄에 선언할 수도 있습니다.

Type Annotations

변수나 상수를 선언할 때 type annotation을 사용할 수 있습니다. 이는 어떠한 자료형으로 변수나 상수를 선언할지 명확하게 하기 위해 사용됩니다.

var welcomeMessage: String

위의 코드처럼 type annotation을 사용할 수 있습니다. 이제 위에서 선언한 welcomeMessage에는 어떠한 String 자료형도 오류 없이 새로 초기화 될 수 있습니다.

welcomeMessage = "Hello"

물론 아까와 같이 여러 변수나 상수를 type annotation을 사용하여 한 줄에 선언할 수 있습니다.

var red, green, blue: Double

Naming Consttants and Variables(상수와 변수에 이름 짓기)

변수와 상수는 유니코드에 있는 모든 문자열로 이름을 지을 수 있습니다.
변수와 상수의 이름에는 띄어쓰기(공백)이 존재할 수 없고, 수학 기호, 화살표, private-use Unicode scalar values, line-and box-drawing 문자를 사용할 수 없습니다. 또한 숫자로 시작할 수는 없지만 시작 말고 다른 곳에는 포함될 수 있습니다.한번 상수 혹은 변수로 선언되면 같은 이름으로 다른 상수나 변수를 만들 수 없고 자료형을 바꿀 수도 없습니다. 상수로 선언된 것을 변수로 바꾸거나 변수로 선언된 것을 상수로 바꿀 수도 없습니다. 물론 상수에는 한 번 선언된 값이 변경될 수도 없습니다.

Printing Constants and Variables(상수와 변수 출력)

상수나 변수는 print(_:separator:terminator:)함수로 출력할 수 있습니다.

var friendlyWelcome = "Hello"
print(friendlyWelcome)

print 함수는 하나 이상의 값을 콘솔 창에 출력해 주는 함수입니다. separaotr, terminator 에는 default값이 있어 함수를 호출할 때 꼭 매개변수에 무엇인가를 주지 않아도 됩니다. terminator는 종결자라는 의미로 기본적으로 줄 바꿈이 있어 print 함수를 호출하면 줄 바꿈이 되는데, 이를 줄 바꿈 없이 다른 것으로 바꾸고 싶다면 다른 값을 넣어주면 됩니다.(예:print(someValue, terminator=" ")) Swift는 문자열 보간을 사용해서 문자열에 상수나 변수의 현재 값을 출력할 수 있습니다.

print("The current value of firendlyWelcome is \(friendlyWelcome)")

위의 코드처럼 백슬래시와 괄호로 문자열 보간을 사용할 수 있습니다.


Comments(주석)

주석을 사용해서 실행되지 않는 텍스트를 추가해서 메모를 하거나 설명을 할 수 있습니다.

//This is a comment.

주석은 위의 코드와 같이 //를 사용하면 해당 줄만 주석 처리됩니다.

/* This is a also a comment
but is written over multiple linse. */

/,/로 묶여있는 주석은 여러 줄을 한 번에 주석 처리할 수 있게 해줍니다. C언어와는 다르게 주석 안에 다른 주석이 중첩될 수 있습니다.


Semicolons(;)

다른 몇 개의 언어와 마찬가지로 Swift에서도 코드 마지막에 세미콜론(;)을 쓰지 않아도 됩니다. 근데 정 쓰고 싶다면 써도 됩니다. 하지만 한 줄에 여러개의 실행문을 쓰고 싶다면 세미콜론을 꼭 써줘야 합니다.

let cat = "cat"; print(cat)

Integers(정수)

Integers는 42, -23 과 같이 분수 성분이 없는 수입니다. 양수, 0, 음수가 정수에 포함됩니다. Swift는 8, 16, 32, 64비트 형식의 부호 있는 정수와 부호 없는 정수를 제공합니다. C언어와 비슷하게 부호 없는 정수는 UInt8과 같이 나타내며 부호 있는 정수는 Int8 같이 나타냅니다. Swift의 모든 타입과 마찬가지로 정수 타입도 대문자로 시작됩니다.

Integer Bounds(정수의 한계값)

min, max 프로퍼티를 사용하여 각 정수 타입의 최댓값과 최솟값에 접근할 수 있습니다.

let minValue = UInt8.min // minValue is equal to 0
let maxValue = UInt8.max // maxValue is equal to 255

Int

대부분의 경우에서 정수형을 사용할 때 크기를 선택할 필요는 없고 Int만 사용하면 됩니다. Int를 사용할 때 컴퓨터가 32비트 플랫폼이라면 Int32로 64비트 플랫폼이라면 Int64로 알아서 정의됩니다. Int32도 -2,147,483,648~2,147,483,647 사이의 값을 저정할 수 있으므로 충분히 크다고 볼 수 있습니다.

UInt

Swift는 부호가 없는 정수도 제공합니다. 물론 UInt도 Int와 마찬가지로 플랫폼에 따라 알아서 정의됩니다.


Floating-Point Numbers(부동소수점)

부동 소수점 숫자는 3.141519, 0.1, -273.15 와 같이 분수형 숫자입니다. 부동 소수점 숫자는 정수형 보다 넓은 범위의 값을 나타낼 수 있고, Swift에서는 Double, Float의 두 가지 부동 소수점 타입을 제공합니다. Double은 64 비트 부동 소수점, Float는 32 비트 부동 소수점입니다. Double의 정밀도는 십진수 15자리 이상이고 Float의 정밀도는 십진수 6자리입니다. 적절한 부동 소수점 타입은 코드에서 작업해야 하는 값의 특성과 범위에 따라 달라진다고 합니다.


Type Safety and Type Inference

Swift는 Type-safe 언어입니다. 즉 잘못된 자료형을 사용하면 컴파일러가 알려줍니다. 따라서 개발자는 오류를 빨리 발견할 수 있습니다. Type-Checking은 다른 타입을 사용하려고 할 때 오류를 발생시켜서 오류를 피할 수 있습니다. 하지만 미리 자료형을 선언하지 않으면 Swift는 type-inference를 통해 적절한 타입을 찾습니다. type-inference를 통해 컴파일러는 코드를 컴파일 할 때 자도응로 자료형을 추로할 수 있습니다. Type-inference 때문에 Swift는 C와 Objective-C와는 다르게 자료형 선언이 필수적이지 않습니다. 하지만 상수, 변수 선언을 위한 let, var는 꼭 써줘야 합니다.

let meaningOfLife = 43 //type Int
let pi = 3.14159 //type Double
let anotherPi = 3 + -.14159 //type Double

Numeric Literals

정수형 리터럴은 아래와 같이 나타낼 수 있습니다. 10진수는 접두사가 없고, 2진수는 0b, 8진수는 0o, 16진수는 0x의 접두사를 가집니다.

let decimalInteger = 17
let binaryInteger = 0b10001 
let octalInteger = 0o21
let hexadecimalInteger = 0x11

부동 소수점 숫자에서는 10진수는 접두사가 없고, 16진수일 때 0x 접두사가 붙습니다. 부동 소수점에서는 e로 표시되는 지수를 가질 수도 있습니다.

//모두 10진수로 12.1875를 나타내는 부동 소수점 숫자입니다.
let decimalDouble = 12.1875
let exponentDouble = 1.21875e1
let hexadecimalDouble = 0Xc.3p0

숫자 리터럴에는 읽기 쉽게 추가적인 형식이 포함될 수 있습니다. 0으로 채워질 수도 있고 가독성을 위해 밑줄이 포함될 수 있습니다. 하지만 기본값에는 영향을 주지 않습니다.

let paddedDouble = 000123.456
let oneMillion = 1_000_000
let justOverOneMillion = 1_000_000.000_000_1

Numeric Type Conversion

좋은 웹페이지 즐겨찾기