오늘 = 어제 + a

a >= 1

CS193P

[iOS] 스탠포드 CS193P 5강 - 1

Beck 2021. 8. 20. 19:39

Error handling

Throw
Swift 에서 함수는 throw 키워드를 선언부 뒤에 붙여서 에러를 발생시킬 수 있음을 나타낼 수 있습니다. 

func foo() throws { }

do-catch
do-catch 구문을 이용해 에러 처리를 할 수 있습니다. 에러가 날 수 있는 구문을 do 블럭 안에 try와 함께 작성하는 것으로 처리할 수 있습니다.

do {
	try 표현식
	print("end")
} catch pattern 1 {
	print("pattern 1 에러")
} catch pattern 2 {
	print("pattern 2 에러")
}

 

Any & AnyObject

Any 👉 함수타입을 포함해서 모든 타입의 인스턴스를 나타낼 수 있습니다.
AnyObject 👉 모든 클래스타입의 인스턴스를 나타낼 수 있습니다.
함수의 인자를 지정하거나 변수의 타입을 지정할 때 모호하게 정의하는 방식으로 개발할 때 추천하는 방법은 아니라고 합니다. 이 개념을 설명하는 부분이 데이터 타입은 항상 명확하게 나타내는 것이 코드를 더 단단하게 하는 방법이라는 생각이 들었던 부분이었습니다.

Int 배열에는 Int 타입의 숫자만 들어가지만 Any 배열숫자, 문자열, 배열이 들어가도 컴파일이 되는 것을 확인할 수 있었습니다. 

var intArr: [Int] = []

intArr.append(1)
intArr.append(2)
intArr.append("3") // 에러가 발생한다!

var anyArr: [Any] = []
anyArr.append(1)
anyArr.append("2")
anyArr.append(intArr)

AnyObject 배열에는 클래스 타입의 변수만 들어가는 것을 확인할 수 있었습니다.

class A {}
class B {}

var anyObject: [AnyObject] = []
anyObject.append(A())
anyObject.append(A())
anyObject.append(B())
anyObject.append(1) // class 변수가 아니라 에러가 발생한다!

❗️ Any, AnyObject 개념을 배우긴 하지만 CS193P 강의 데모에서는 사용하지는 않습니다.


 

Casting

함수의 반환 값이나 변수의 값이 불확실할 경우 as 키워드를 사용해서 값의 타입을 지정할 수 있습니다. 이것을 타입 캐스팅이라고 합니다.

as? 👉 특정 타입이 맞는지 확신할 수 없을때 사용합니다. (Optional 값을 반환합니다.)
as! 👉 특정 타입이라는 것이 확실한 경우에 사용합니다.

func foo() -> Any { return "Hello" }

let optionalValue = foo() as? String
print(optionalValue) // Optional("Hello") 출력

let value = foo() as! String
print(value) // Hello 출력

 

'CS193P' 카테고리의 다른 글

[iOS] 스탠포드 CS193P 6강  (0) 2021.08.31
[iOS] 스탠포드 CS193P 5강 - 2  (0) 2021.08.20
[iOS] 스탠포드 CS193P 4강  (0) 2021.08.18
[iOS] 스탠포드 CS193P 3강  (0) 2021.08.18
[iOS] 스탠포드 CS193P 2강  (0) 2021.08.15