목록swift (19)
sanichdaniel의 iOS 개발 블로그
Operator Overloading Class, struct는 기존에 존재하는 operator에 대한 자신만의 구현을 제공할수 있다. 이것을 operator overloading이라 한다. operator은 +, -, *, /, %, = 같은 심볼들로 값을 체크하거나, 수정, 합치는데 사용된다 함수를 사용하는것보다 더 간결하게 코드를 표현할수 있을때 사용된다 Equatable 프로토콜 구현이 사실 operator overloading이었다! 출처 www.hackingwithswift.com/example-code/language/how-to-use-operator-overloading
빌드 타임이 어디서 오래걸리는지 측정해보았다. Build Settings의 “Swift Compiler - Custom Flags”, “Other Swift Flags” 에서 -Xfrontend -warn-long-expression-type-checking= 옵션을 추가해주고 빌드해본 결과 == 비교 연산자를 사용하는곳에서 warning이 많이 나왔다. 비교 연산자 타입추론이 오래 걸리는 이유? 비교 연산자 == 은 수많은 곳에서 overload되는 operator이다. (overload: 같은 이름의 다른 메서드들) swift standard library에서만 73곳에서 overload되고 있고, 커스텀하게 만든 타입들에서도 자주 overload 된다. operator는 글로벌 함수처럼 호출되기에,..
Pure function 이란? 1. 같은 인자라면, 같은 리턴 값 (외부에 의존하지 않는다) 2. 사이드 이펙트가 없다 장점 1. 재사용성, 테스트하기 쉬위짐 2. 사이드 이펙트가 적음 함수를 pure하게 만들기 1. 값을 바꾸지 말고, 새로운 값을 리턴하자 extension String { mutating func addSuffixIfNeeded(_ suffix: String) { guard !hasSuffix(suffix) else { return } append(suffix) } } 아래 함수는 값을 mutate 하기에 pure 하지 않다 mutable 값에만 호출할수 있게되고 더러운 var muate assign 코드가 필요해진다. var fileName = contentName fileName..
swift에서 함수는 일급 시민이다라는 말은 여러번 들어보았지만, 정작 일급 시민 개념에 대해 완전히 모르는것 같아 공부해보았다. 일급 시민 (First-class Citizen) 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. 1. 함수의 인자로 전달 2. 함수에 의해 리턴 3. 변수에 할당 가능 4. 비교 연산이 가능 일급 함수 (First-class Function) 함수를 일급 시민으로 취급하는것 High Order Function 함수를 인자로 받거나, 함수를 리턴하는 함수 함수가 일급 시민인 언어에서, high order function이 가능하다는것이 보장된다. -> 함수를 인자로 받거나 리턴할수 있기에 high order function이 가능하다고 함수가 일급..