목록swift (19)
sanichdaniel의 iOS 개발 블로그
마틴 파울러의 리팩토링을 읽다가 리팩토링 기법중 하나인 함수를 추출하기 단원을 읽다가, 함수가 사용되는곳이 한곳에 불과하면 private 함수로 빼는것보다 중첩함수를 사용하는것이 유용하다는 글을 읽었다. 중첩함수를 한번도 사용해본적이 없었기에 공부해보았다. 중첩함수를 처음 보았을때는 낯설어서 못생겼다고 생각을 했었다. 하자만 공부해보니 중첩함수는 가독성과 캡슐화의 측면에서 이점이 있다. 가독성 private 함수는 클래스(또는 파일)에서 접근이 가능하다. 하지만 중첩함수는 해당 함수안에서만 사용된다는것이 보장된다. public namespace를 줄이려고 private 키워드를 사용하듯, private namespace를 줄이기 위해 중첩함수를 사용해보자. 캡슐화 중첩함수는 소속된 함수의 지역변수에 접근..
value 타입에 관한 WWDC 영상을 참고하여 새로알게된 사실들을 정리해보았다. 배경지식 value type vs reference type value type: 값이 복사될때 (할당, 생성, 인자로 넘겨질때) 매번 독립적인 인스턴스를 만든다. reference type: 값이 복사될때 참조가 복사되고 인스턴스는 공유된다 heap stack 어디 저장되나 Referenct 타입은 heap에 저장되고, 포인터(참조)는 stack에 저장된다. value type이 class에 포함되거나 closure에 캡쳐되면 heap에 저장된다. Reference 타입은 항상 heap에 저장, value 타입은 자신이 선언된곳에 저장된다. Local Reasoning 강의 초반에 Local Reasoning이란 term..
expressions(수식) 값을 리턴하는 코드 let someValue:Int = 12 if true && false { print("This is false") } 여기에 들어간 expression은 let someValue:Int = 12 true && false "This is false" statement(문장) 어떠한 작업을 수행하는 모든 문장 Swift에서는 크게 3가지 종류로 statement를 구분한다 expression은 값을 리턴하는 statement라 볼 수 있다 1. simple statements expression이나 선언 2. compiler control statements #if 3. control flow staements if 문, guard문, for 문.. lite..
Swift의 타입추론은 양방향으로 이루어진다고 한다. 알아보자 Bottom-up 타입 추론 타입 정보가 leaf에서 root으로 전달되는것 var x = 0 literal 0을 보고 x의 타입을 Int로 추론한다. (정수의 literal의 기본 타입은 Int이다.) leaf인 literal이 root인 변수의 타입을 결정한다. let age = 26 // age is of type Int let name = "Toni" // name is of type String let pair = (age, name) // pair is of type (Int, String) pair 튜플의 타입은 (age, name)의 타입으로부터 결정이 된다. 타입체커는 age, name을 코드에서 찾는다. 즉 root인 pai..