약간 루즈했던 하루
어렵진않고 가볍게 흥미롭게, 재밌게 배울수있는 부분이었다.
접근제어는 어렵다기보다는 조금 헷갈렸음.
Result 타입을 통해 do try catch 가 아닌 switch + cas let 바인딩 구문으로 더 간편하게 에러처리를 할 수 있어서 좋았다. 실제 개발하게 되면 do try 보다는 Result 를 많이 쓸것같은 느낌
Result 를 다시 get() 메서드를 통해 do try 구문으로 처리가능하도록 에러를 throw 던져줄수도 있다.
네트워크, 즉 데이터를 백엔드에서 받아오는 함수 처리시 자주 쓰일 듯.
기존 에러처리방식은 catch 구문에서 자동으로 제공받은 error상수(에러프로토콜 타입)을 if let 바인딩하면서 다시 내가 선언해준 error타입으로 타입캐스팅 해주는 as? 과정이 필요했는데, Result는 그런 번거로움이 줄어들어서 직관적이다.
자바스크립트를 배우면 꼭 하고 가는 타이머구현..에서 배웠던 Date()
Swift 에서는 Date 구조체로 명시되어있었다. Date()를 하면 현재시점(사실은 기준시점으로부터 몇초가 지났는지를 저장한) 을 담은 인스턴스가 생성된다.
Calendar구조체, DateFormatter 클래스와 함께 사용한다.
Calendar 구조체로 다양한 셋팅이 가능하고, from:Date()와 함께 현재시간의 특정 값들을 가져오는것도 가능하다
워낙 메서드들이 많아서 다 한번에 암기하기는 어려웠지만 강의에서 말씀해주신대로 복습하고 구현하다보면 자연스럽게 익혀지긴 할듯하다.
Date 인스턴스 => 문자열 뿐만 아니라
문자열 => Date 인스턴스 변환도 가능하고
Date 구조체를 확장해서 커스터마이징해서 인스턴스를 찍어내는것도 가능하다.
접근제어의 경우에는 아하 이래서 일반타입을 변수에 담을 수 있구나 싶은 것들이었다.
강의에서는 접근제어가 올라감(개방됨/높음) / 접근제어가 내려감(폐쇄됨/낮음) 식으로 올라가고 내려가는 단어를 주로사용했다. (이게 좀 헷갈렸다)
가장 대원칙 두가지는 접근제어가 폐쇄적인 있는(낮은) 접근수준에 더 개방적인(높은) 접근수준을 사용할수 있다는 것이다.
예를들어 Internal 인 변수에 타입(public)을 사용하거나
Internal(낮은)인 func에서 파라미터등으로 public(높은) 제어타입이 사용가능하다.
접근가능하다는 것은 접근하려는 타입이 더 폐쇄적 수준(낮은)의 접근제어를 가졌다는 의미이다.
비슷하게 타입의 상위클래스는 서브클래스보다 더 폐쇄적이고
멤버의 경우 상위멤버가 더 폐쇄적이어야(호출이 가능해야) 서브클래스에서 해당 멤버 재정의도 가능해진다.
복습은 일단 생략