TIL 11일 차 - Swift 필수 문법 문제 1번 풀이 문제 1-1.- 두 개의 Int 값을 파라미터로 받고, 하나의 String 값을 반환하는 클로저를 설계- 클로저 내부에서는 두 정수를 더한 후, "두 수의 합은 {합계}입니다"라는 문자열을 반환- 이 클로저를 상수 sum에 저장하고, 정확한 타입을 명시 내가 쓴 첫 번째 오류투성이 코드 공개let sum: (Int,Int) -> String = {(Int, Int) -> String in return "두 수의 합은 \($0 + $1) 입니다."}여기서 내 멋대로 $0랑 $1을 썼다근데 오류가 나는 거다 왜 오류가 나지? 했는데 클로저에서 매개변수 선언을 시작했기 때문에 Swift가 자동 파라미터 $0, $1을 만들어주지 않아 사용이 불가하다..
TIL 11일 차 - Swift 문법 타입 캐스팅타입 캐스팅이란?이 객체의 진짜 타입이 뭔지 확인이 타입으로 써도 되는 것인지 물어보기 타입캐스팅이 필요한 상황?let animals; [Any] = ["모찌", 1, true]이 animals 안에 String, Int, Bool 다 섞여있는데 스위프트는 모두 Any라고 받아들인다. print(animals[0].count) // 에러 발생왜 에러가 발생하냐면 animals의 0번째 인덱스의 값이 String인지 확신이 없기 때문임 이럴 때 타입캐스팅을 써야 한다! let value: Any = "Hello"if let text = value as? String { print(text.count)}// 해석: value가 String이면 text에 넣어서..
TIL 10일 차 - Swift 문법 접근 제어자접근 제어자란 말 그대로 이 코드를 어디까지 보여줄지 정해주는 스위치 같은 것이다.class, structure, enum과 프로퍼티, 메소드에도 각각 적용이 가능하다. 이러한 접근 제어자가 없다면- 내부 로직을 막 건드릴 수 있음- 나중에 구조를 바꾸기 힘듦- 협업 시 사고가 발생할 수 있음 Swift 접근 제어자는 총 5개이다. open > public > internal > fileprivate > private 순으로 꽁꽁 숨겨진다.(아무것도 안 쓰면 internal임) 1. open- 어디서든 접근, 상속, 오버라이드 가능함- 가장 개방적인 접근 수준- 유일하게 class에서만 사용 가능함 (상속이 가능하고 재정의도 가능하기 때문에) 2. publ..
TIL 10일 차 - Swift 문법 중첩타입 중첩된 타입은 하나의 타입 안에 다른 타입을 정의하는 것을 의미함 struct User { enum Role { case admin case guest }}// Role이 User 안에 들어가 있음let role: User.Role = .admin// 접근방법: User 안에 있는 Role 타입의 admin - 구조적으로 복잡한 클래스나 구조체등을 더 조직적으로 관리할 수 있음- class, structure, enum등에서 사용할 수 있음- 중첩된 타입을 사용하면 코드의 가독성을 높이고, 타입간의 연관성을 명확하게 할 수 있음- 타입의 블록 안에서 다른 타입을 정의하고 사용하는 방식을 구현함 User.RoleUser.Status/..
TIL 10일 차 - Swift 문법 enum 열거형 enum은 쉽게 말해 "정해진 선택지들 중에 하나만 고르게 만드는 타입"이다. 신호등을 예를 들어 enum을 만들어보자enum TrafficLight { case red case yellow case green}// enum 타입의 light 변수 생성하고 red값 대입// light에는 red,yellow,green중 하나만 들어갈 수 있다. 또한 enum안에 함수를 만들고 호출하고 사용할 수 있음// Season enum을 선언하고 Season이 그룹화하여 갖고있는 값은 spring, summer, autumn, winter이다.enum Season: String { case spring case summer ca..
TIL 10일 차 - Swift 문법 프로토콜프로토콜은 이 클래스(구조체)는 이러한 기능을 반드시 가져야 한다!라고 약속을 적어둔 설계도임class, structure, enum에서 공통으로 구현해야 하는 메소드와 프로퍼티의 청사진을 정의하는 기능이다. 프로토콜 자체가 기능을 구현하지는 않으며, 오직 설계만 제공함 프로토콜의 일반적인 생김새protocol 프로토콜 이름 { // 프로퍼티 정의 // 메소드 정의}protocol FullyNamed { var fullName: String { get } func sayMyFullName() -> String // 구현부는 작성 X}protocol Worker { fun work()}// Worker를 채택하는 녀석은 work()라는 함수를..