GGURUPiOS

Swift 공식 문서 정리 - (1) The Basics 본문

Swift/공식문서 정리 ( 문법 )

Swift 공식 문서 정리 - (1) The Basics

꾸럽 2023. 4. 18. 17:19

The Basics

The Basics 기본 사항

상수 및 변수 선언

상수(let) 값은 변경 불가

변수(var)는 다른값으로 변경 가능

let maximumNubmerOfLoginAttempts = 10
var currentLoginAttempt = 0

var x = 0.0, y = 0.0, z = 0.0 // 처럼 한 줄에 쉼표로 선언 가능함.

타입 선언

상수 및 변수를 선언 할 때 콜론을 이용하여 타입 선언을 할 수 있음 ( 타입을 미리 지정? 하는 느낌 )

var message: String // : String 으로 String 값이 저장될 수 있음을 선언
message = "Hi" // 이후에 String 값 할당

var red, green, blue: Double // 처럼 역시 한줄에 쉼표로 선언 가능함

/* 공식문서 
 타입 선언을 작성하는 경우는 드뭄 (자동으로 타입 추론을 해주기 때문에)
 그러나, 경험상 Array의 경우 타입 선언을 해줘야 하는 경우가 많았음 (에러 뱉음)
 ex) var intArray: [Int] = [] / ~~var intArray = [] 실패 */~~

상수 및 변수 명명

거의 모든 문자를 변수나 상수명 으로 지정 가능

Swift 키워드(where 같은 키워드) 와 같은 이름을 사용할 경우 백틱``` 으로 묶어서 사용 가능하지만 되도록 지양하자

상수 및 변수 출력

print문을 이용해 콘솔 창에 출력 할 수 있음

\() 을 사용해서 문자열 안에 상수, 변수 값 출력 가능

var name = "Ggurup"
print(name) // Ggurup 출력 
print("My name is \\(name)") // My name is Ggurup 출력

 


주석

C언어의 주석과 매우 흡사함

한줄 : //

여러줄 /* */


세미콜론

Swift는 세미콜론이 필요 없지만, 한 줄에 여러개의 코드 작성 시 사용가능

let name = "Ggurup"; print(name) // "Ggurup 출력"

정수

대부분의 경우 특정 크기의 정수 선택 필요 X


부동 소수점

Double은 최소 15자리의 정밀도, Float는 6자리

코드에 따라 다르겠지만 Double이 선호됨


타입 안전성과 타입 추론

let meaningOfLife = 42 // Int로 추론됨
let pi = 3.14159 // Double로 추론됨 (부동 소수점 숫자는 항상)
let anotherPi = 3 + 0.14159 // Double로 추론됨

정수 및 부동 소수점 변환

let three = 3 // Int 
let pointOneFourOneFiveNine = 0.14159 // Double 
let pi = Double(three) + pointOneFourOneFiveNine // three(Int)를 Double(three)를 통해 Double로 변환

// 변환이 없으면 에러.

let integerPi = Int(pi) // 3 출력 

// 부동 소수점 값은 Int로 변환 시 항상 잘리게 됨

typealias

이미 존재하는 유형의 대체 이름 정의 ( 별칭 느낌 )

typealias AudioSample = UInt16

var maxAmplitudeFound = AudioSample.min

bool

let yes = true // true
let no = false // false

// bool 은 true와 false두가지 값 존재, 조건문에서 유용

tuple 튜플

let http404Error = (404, "Not Found") // 타입추론으로 (Int, String)

let (statusCode, statusMessage) = http404Error // 튜플을 상수 또는 변수로 분해 해서 접근 가능함

print(statusCode) // 404 출력
print(statusMessage) // Not Found 출력

// 변수나 상수를 사용 안할 경우, 밑줄로 무시 가능 

let (statusCode, _) = http404Error // 위와같이 사용가능

/* 공식문서에서
튜플은 함수의 반환 값으로 유용함, 위와 같이 페이지 검색 성공 실패 여부를 가져올 수 있음
단일 값보다 유용한 정보를 제공하기 때문에 유용함

그러나 단순 값의 반환으로 유용한 것이지 복잡한 데이터 구조에는 맞지 않음. 
클래스Class나 구조체Struct를 이용해 모델링 하는 것이 맞음.
*/

옵션

옵션은 값이 없을 수 있는 상황에 사용된다. 값이 있거나 없거나 두가지 상황

let stringNumber = "123" // String
let convertedNumber = Int(stringNumber) // String "123"을 Int로 변환, 실패할 수 있으므로 convertedNumbe 의 타입은 Int? 임. 

Nil

다른 언어에서의 null과 같은 의미라고 보면 될것 같다.

var serverCode: Int? = 404 // 위와 같이 옵셔널로 선언 가능
serverCode = nil // 위와 같이 nil 도 할당 가능

If 문 및 강제 언래핑

var name: String? = nil
if name != nil {
	print("값이 있음")
}

// !를 이용해 강제 언래핑 가능 ( 값이 있다고 확신하는 경우, !를 사용했는데 값이 없으면 런타임 에러)
if name != nil {
		print("이름은 \\(name!)입니다") // if 문에서 name 에 값이 있다고 걸러졌기 때문에 사용
}

이외의 옵셔널 체이닝 부분은 따로 밑에서 또 다루기 때문에, 여기까지만 하고 넘어가겠다.


오류처리

오류처리에 관한 부분도 나중에 다루기 때문에 여기까지


대부분 자세하게 들어가기 전에 기본적으로 알아야 할 항목을 나열한 듯 함