스위프트 문법 1 (기본, 출력, 변수, 타입)

스위프트 문법 1 (기본, 출력, 변수, 타입)

- 7 mins

필기의 습관!! 주석 달기

프로그래밍의 규모가 커지면 내가 짠 코드를 내가 알아볼 수 없는 현상을 쉽게 볼 수 있습니다. 그렇기에 주석은 프로그래밍에 없어서는 안될 중요한 요소이며, 필요한 가장 큰 이유는 아래와 같습니다.

  1. 빠르게 특정 부분의 코드를 비활성화
  2. 협업 또는 인계 시 이해를 돕기 위해
  3. 자기 자신을 위해
  4. 문서화

아래는 주석을 다는 방법입니다

주석 없이도 쉽게 이해할 수 있을 만한 코드를 짜는 것이 베스트이지만 현실적으로 어려움이 많기때문에 주석을 습관화하는 것이 좋습니다.


프로그래밍의 시작 “Hello, World!”

스위프트에서 출력하기위해서 print를 사용합니다.

print("Hello, World!") //Hello, World

print를 이용해 문자열 뿐만 아니라 변수에 저장된 모든 타입의 값을 출력할 수 있습니다.

var num = 1
print(num) //1
//-------------------------
print("숫자", num)
print("숫자 \(num)") //가장 많이 쓰임
print("숫자 " + String(num))
//위 3개의 출력 결과: 숫자1

Semicolon (;)

대부분의 프로그래밍 언어는 모든 명령이 끝나면 세미클론(;)을 입력해 명령을 마쳤어야 했습니다. 하지만 스위프트에서 세미클론의 입력 여부는 자유이며, 세미클론을 입력해주지 않더라도 문제 될게 없습니다.
하지만, 한 문장에 여려 명령(다중 명령)을 실행 할 경우 세미클론으로 명령어를 구분해줘야 합니다.

print(1); print(2); print(3);

Constants and Variables

상수와 변수는 현재 어떤 데이터에 대한 상태값, 속성 정보 등을 담고 있는 컨테이너입니다.

let maximumNumberOfLoginAttempts = 10
// maximumNumberOfLoginAttempts = 20 (이렇게 상수를 변경하려고 할 시 오류가 뜹니다) 
var currentLoginAttempt = 0
currentLoginAttempt = 1 //변수 변경 가능

//아래와 같이 여러개의 변수, 상수를 한번에 선언해 줄 수 있다.
var x = 0.0, y = 0.0, z = 0.0 

Naming

camel case 스위프트에서 지향하는 네이밍은 단어의 첫 글자를 대문자로 작성하는 Camel case입니다. 또, 스위프트는 영어 외에도 유니코드 문자를 포함한 대부분의 문자를 사용해 네이밍 가능합니다.

let π = 3.14159
let 你好 = "你好世界"
let 🐶🐮 = "dogcow"
let 한글 = "세종대왕"
let `let` = 1   // Swift 에서 사용되는 키워드일 경우 backquote(`) 를 이용해 사용 가능

print(π)
print(你好)
print(한글)
print(🐶🐮)
print(`let`)

그렇다고 모든 이름으로 변수를 선언할 수 있는 것은 아닙니다. 사용할 수 없는 규칙은 아래와 같습니다.

  1. 같은 스코프 범위 내에서 중복되는 이름
  2. 공백문자
  3. 수학 기호 (√, ∑ 등)
  4. 화살표 (→, ← 등)
  5. 숫자로 시작하는 이름 (시작 부분 외에는 사용 가능)

변수를 선언할때 딱 봐도 이해할 수 있는 이름을 짓는것이 중요합니다.


Type Annotation & Type Inference

Type Annotation (타입 지정)

변수 선언 시 사용될 자료의 타입을 명확하게 지정하는 것

let year: Int = 10 //이렇게 타입(Int)을 지정하여 선언

let language: String //타입을 지정해줄 경우 값을 초기화하지 않아도 된다.
language = "Swift 4"

var red, green, blue: Double //여러개의 지정된 타입(Double)의 변수를 한번에 선언
red = 255.0
green = 150.123
blue = 75

Type Inference (타입 추론)

변수 선언 시 초기화로 사용되는 값의 타입을 통해 변수의 타입을 추론하여 적용하는 것

var weight = 6.4 //이렇게 타입을 지정하지 않고 선언

var spelling = ["T", "O", "R", "I"]

Literals & Types

Numeric Literals

아래와 같이 일반적으로 간단하게 숫자를 표현할 수 있다.

var singedInteger = 123
singedInteger = +123

아래와 같이 2진법, 8진법, 16진법 등을 사용할 수 도 있다.

let binaryInteger = 0b10001 //2진법 (0b)
let octalInteger = 0o21 //8진법 (0o)
let hexadecimalInteger = 0x11 //16진법 (0x)

큰 수를 입력할때 가독성을 올리기 위해 아래와 같이 사용할 수 도 있다.

var bigNumber = 1_000_000_000
bigNumber = 1_0000_0000 //원하는 자리수별로 끊을 수 있음
bigNumber = 0x1000_1000_0000 //2진법에서도 사용 가능

Integer Types

Integer은 정수를 표현하는 타입이며, 기본적으로 Int를 이용해 선언한다. Int의 종류는 아래와 같다.

var unsignedInteger: UInt = 123 //이렇게 UInt를 사용할 수 있다.
type(of: unsignedInteger)

현재 대부분의 컴퓨터는 64bit컴퓨터이기때문에 대부분 Int64가 default로 지정되어있고, 특수한 상황이 아닌 한 UInt보다 Int를 쓰는게 권장되고 있다.

Floating-point Literal

소수를 표현하는 방법은 DoubleFloat이 있다.

소숫점을 표현하는 방법은 아래와 같이 3가지가 있다.

var floatingPoint = 1.23
floatingPoint = 1.23e4
floatingPoint = 0xFp3

Boolean Literal

Boolean은 참(true), 거짓(false)로 이루어져 이며, 선언 방법은 아래와 같이 Bool을 이용하면 된다.

var isBool = true
var isBoolean :Bool = false

String Literal

String은 문자열을 표현하는 타입이며, 선언 방법은 아래와 같이 String을 이용하면 된다.

let str = "Hello, world!"
var language: String = "Swift"

Character Literal

Character은 문자를 표현하는 타입이며, 선언 방법은 아래와 같이 Character을 이용하면 된다.

var character: Character = "C"

캐릭터를 선언할때는 무조건 위와 같이 타입을 지정해줘야 한다. 지정하지 않으면 Character타입이 아닌 String타입으로 선언된다.


Typealias

Typealias는 문맥상 더 적절한 이름으로 기존 타입의 이름을 참조하여 사용하고 싶을 경우 사용한다.

typealias AudioSample = UInt16 //UInt16이라는 타입 이름 대신 AudioSample라는 이름으로 타입을 선언할 수 있다.

var maxAmplitudeFound = AudioSample.min
var maxAmplitudeFound1 = UInt16.min

Typealias를 잘 사용하면 편하게 프로그래밍을 할 수 있다.


Type Conversion (타입 변환)

프로그래밍을 하다보면 원하는 값의 다른 타입의 값을 갖고 싶을 때가 있다. 이럴 때 타입 변환을 사용하면 된다. 사용 방법: 원하는 값이나 변수를 괄호로 묶고 앞에 원하는 타입을 적으면 된다.

let h = UInt8(25) //이런식으로 타입을 변환할 수 있다.
let x = 10 * h
print(x)

let num = 10
let floatNum = Float(num)//이렇게 변수를 형변환 할 수 도 있다.

절대값 구하기

절대값을 구하는 방법으로 magnitude와 abs가 있다.

let integer = Int(-15)
let magnitude = integer.magnitude //UInt형으로 변경시킴
let absNum = abs(integer) //기존타입 유지시키면서 양수로 변경시킴

magnitude, abs 차이점 magnitude는 UInt형으로 변경시킴, abs는 기존타입 유지시키면서 양수로 변경시킴, 그래서 웬만하면 abs를 쓰는게 좋다.

comments powered by Disqus
rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora