티스토리 뷰

출처

http://kka7.tistory.com/2


상수와 변수

선언

상수는 let, 변수는 var 를 이용해 선언한다.

let maximumNumberOfLoginAttempts = 10

var currentLoginAttempt = 0

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



타입을 명시

var welcomeMessage: String

var red, green, blue: Double



상수나 변수 출력

print( ... ) 함수를 이용한다.
Swift 에서는 문자열 끼워넣기 (string interpolation) 을 사용하여
긴 문자열에서 자리표시자(placeholder) 처럼 
상수나 변수의 이름을 포함하여 표시할 수 있다.

var currentLoginAttempt = 0

print(currentLoginAttempt)


var welcomeMessage: String = "Hello"

print("\(welcomeMessage) Swift!")

print(type(of: welcomeMessage))


변수의 type 을 알고 싶으면, type(of: ~) 를 사용한다.



세미콜론과 주석

코드에서 각 문장 뒤에 세미콜론을 강제하지 않는다.
원한다면 사용할 수 있다.
한 줄에서 여러 개의 구분된 문장들을 사용한다면 세미콜론이 필요하다.

주석은 Objective C 나 C 언어와 거의 동일한데 다른점이 있다면
여러줄 주석이 중첩된다는 점이다.

/* This is the start of the first multiline comment. 

 /* This is the second, nested multiline comment. */

 This is the end of the first multiline comment. */


즉, /* ~ */ 의 짝이 맞아야 한다. 





자료형

정수형

8, 16, 32, 64 비트형태로 부호가 있고 부호가 없는 정수형을 제공한다.
정수 범위는 아래와 같이 구할 수 있다.

let minValue = UInt8.min    //0

let maxValue = UInt8.max    //255


32비트 플랫폼에서 Int 는 Int32, UInt 는 UInt32 로,
64비트 플랫폼에서 Int 는 Int64, Uint 는 UInt64 로 계산된다.

실수형

Float 는 소수점 이하 6자리의 정확도를,
Double 은 15자리의 정확도를 가진다.

타입 안전성과 타입 추론

Swift 는 타입에 안전한 언어이다. 즉, 코드 값의 타입을 명확하게 해주기에
컴파일 시 타입을 확인하고 일치하지 않은 경우 오류를 표시한다.

타입 추론은 상수나 변수를 선언하는 시점에 값을 할당하면 타입을 알아서 가지는 것을 말한다.


let meaningOfLife = 42

print(type(of: meaningOfLife))    //Int


let pi = 3.14159

print(type(of: pi))    //Double




숫자의 원래 값 (literal)

10진수 숫자는 prefix 없이 사용한다.
2진수는 0b 를,
8진수는 0o 를,
16진수는 0x 를 사용한다.

let decimalInteger = 17

let binaryInteger = 0b10001     // 17 in binary notation

let octalInteger = 0o21         // 17 in octal notation

let hexadecimalInteger = 0x11   // 17 in hexadecimal notation



literal 에서는 읽기 쉽게 별도의 서식 ( _ ) 를 포함할 수 있다.

literal 에서 의 언더바는 아무런 영향을 주지 않는 서식이다.


let paddedDouble = 000123.456

let oneMillion = 1_000_000

let justOverOneMillion = 1_000_000.000_000_1




숫자의 형 변환

할당된 값은 다른 타입의 값으로 암시적인 변환을 할 수 없다.
명시적으로 형 변환을 해줘야 연산이 가능하다.

let twoThousand: UInt16 = 2_000

let one: UInt8 = 1

let twoThousandAndOne = twoThousand + UInt16(one)


정수, 부동소숫점의 형 변환에서도 명시적으로 형 변환을 해줘야한다.

형 변환 없는 더하기는 허용되지 않는다.


let value1 = 5

let value2 = 3.3

let value3 = Double(value1) + value2





타입 별명 (typealias)

기존 타입의 다른 이름을 정의한다.
외부 소스에서 특정 크기의 데이터로 작업하는 것처럼
type aliases 는 기존 타입을 문맥에 더 어울리는 이름으로 참조하고자 할 때 유용하다.

typealias AudioSample = UInt16

var maxAmplitudeFound = AudioSample.min




Boolean

Bool 값은 true, false 라는 두가지 상수값을 제공한다.

let orangesAreOrange = true

let turnipsAreDelicious = false







Tuple

여러 개의 값을 하나로 합성하여 그룹화한다.

튜플 내의 값은 모든 타입이 될 수 있고 같은 타입이지 않아도 된다.


순서를 가진 (permutation) 모든 타입으로부터 튜플을 만들 수 있고 2개 이상도 가능하다.



let http404Error = (404, "Not Found")

(== let http404Error = (statusCode:404, statusMessage:"Not Found"))


let (statusCode, statusMessage) = http404Error

print("The status code is \(statusCode)")       // "The status code is 404"

print("The status message is \(statusMessage)") // "The status message is Not Found"



튜플을 분해할 때 일부만 필요한 경우 밑줄이 있는 부분은 튜플에서 무시한다.


let (justTheStatusCode, _) = http404Error

print("The status code is \(justTheStatusCode)")



꼭 naming 을 하지 않아도 인덱스로 각각 요소의 값에 접근이 가능하다.


print("The status code is \(http404Error.0)")

print("The status message is \(http404Error.1)")



튜플은 관련된 값들을 임시로 그룹화하는데 유용하다.

복잡한 데이터의 구조를 만들기에는 적합하지 않다.

데이터 구조가 임시적이 아니라 계속 사용되어야한다면

튜플보다 클래스나 구조체 모델이 더 좋다.












공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함