본문 바로가기
IOS/Swift

[Swift] 기본 문법

by 얘리밍 2022. 12. 22.
320x100
728x90

 

 

📌 타입 별칭

Type aliases 이며, 이미 존재하는 타입에 다른 이름을 붙이는 것.

typealias 키워드를 사용함

typealias AudioSample = UInt16

var maxFound = AudioSample.min

 

 

 

📌튜플

튜플 값은 어떠한 타입도 가능하며, 서로 같은 타입일 필요는 없다. 

let httpError = (404, "Not Fount")
//튜플의 타입은 (Int, String)

 

🔎 튜플 값 접근하기

 

1. 개별 요소로 접근하기

let (statusCode, statusMessage) = httpError

print("statusCode : \(statusCode)")
// statusCode : 404 

print("statusMessage : \(statusMessage)")
// statusMessage : Not Found

 

 

1.2 일부만 필요한 경우

필요하지 않은 부분은 언더바(_) 처리를 하여 무시한다. 

let (justTheStatusCode, _) = httpError
print("statusCode : \(justTheStatusCode)")
// statusCode : 404

 

 

2. 인덱스 사용하여 접근하기 

처음에 선언한 튜플 httpError의 인덱스를 사용하여 접근한다. 

httpError.0 , httpError.1 

print("statusCode : \(httpError.0)")
// statusCode : 404 

print("TstatusMessage : \(httpError.1)")
// statusMessage : Not Found

 

 

3. 이름 요소를 정해 접근하기 

튜플을 정의할 때, 요소에 이름을 정할 수 있다. 

let httpStatus = (statusCode: 200, description: "OK")
print("statusCode : \(httpStatus.statusCode)")
// statusCode : 200
print("statusMessage : \(httpStatus.description)")
// statusMessage : OK

 

👉함수의 반환 값이 여러개일 때, 사용하면 용이하다. 하지만 데이터 구조가 복잡하면 사용 X

 

 

 

+ 크기가 같은 튜플은 비교할 수 있다. 

(1, "zebra") < (2, "apple")   // 각각 튜플의 첫번째 요소를 비교하여 2는 1보다 크다 
(3, "apple") < (3, "bird")    // 첫번째 요소는 같지만, b는 a 보다 크다 
(4, "dog") == (4, "dog")

 

< 혹은 > 연산자비교 불가능한 경우는 다음과 같다. 

("blue", false) < ("purple", true)  //에러. boolean 값은 비교 불가능함

stringInt 값만 < 혹은 > 연산자를 사용하여 비교 가능하다 

 

 

 

 

 

📌옵셔널과 nil 

값이 없는 경우 혹은 값이 있지만 옵셔널을 풀어서 값에 접근할 경우 옵셔널(optionals)을 사용한다. 

혹은 옵셔널 변수에 특수 값 nil로 지정하여 값이 없는 상태를 나타낼 수 있다. 

var surveyAnswer: String?

var ResponseCode: Int? = 404
ResponseCode = nil

 

 

옵셔널 바인딩을 사용하여 if 혹은 while 구문에서 옵셔널 값이 있는 지 체크할 수 있다. 

let num = "123"

if let convertNum = Int(num) {
	print("The string has an integer value of \(convertNum)")
    } else {
    print("The string could not be converted to an integer")
}

 

에러 처리에 대해서는

나중에 자세하게 알아보겠다..

 

 

 

728x90
반응형