Swift🐤

· Swift🐤
처음 해당 키워드를 배웠을때 왜 사용하는지 몰랐지만 코드를 작성하면서 "오! 깔끔해지잖아" 했던 키워드 typealias에 대해서 공부 해보록 하겠습니다. typealias typealias는 쉽게 특정 타입에 이해하기 쉽게 별칭을 붙여준다라고 생각하면 쉽습니다. 기존 타입의 이름 변경 제가 이전에 진행했던 프로젝트에서 지도에 핀을 찍는 기능을 추가를 해야했습니다. 그 과정에서 CoreLocation이라는 애플에서 제공하는 기본 프레임워크를 사용했습니다. CoreLocation의 주요 기능은 위치 정보를 제공입니다. 그 과정에서 위도 경도를 CLLocationDegrees라는 타입으로 저장하게 됩니다. 공식 문서에서 해당 타입을 찾아보니 Double타입을 type alias를 했다는 것을 알 수 있습니다..
· Swift🐤
코딩테스트를 준비하기 위해 문제를 푸는 과정이었습니다. 이때 당시에만 해도 저는 python에서의 tuple은 리스트와 같이 연속되는 값의 묶음이고 리스트와 다르게 한번 생성된 후 값의 변경이 불가능하다고 생각하였고 swift 역시 같은 속성을 가진다고 생각하였습니다. 문제를 푸는 과정에서 좌표를 나타내는 정보를 (x: Int, y, Int)와 같이 tuple 형식으로 나타내려고 하였지만 코드가 진행되는 과정에서 좌표의 값이 변경해야한다는 점을 고려해서 tuple을 사용하지 않았습니다. 어 뭐야?? tuple에 저장되었던 값이 변경이 되잖아?!?! python에서 tuple 타입의 변수값 변경 코드 # 튜플 선언과 초기화 my_tuple = (1, 2, 3, 4, 5) print(my_tuple[0]) ..
· Swift🐤
reduce 메소드는 컨테이너의 요소들을 병합하는 제네릭 메소드입니다. reduce 함수의 시그니쳐 @inlinable public func reduce( _ initialResult: Result, _ nextPartialResult: (Result, Element) throws -> Result ) rethrows -> Result 제네릭 메소드이므로 다양한 타입으로 연산이 진행됩니다. initialResult 첫번째 파라미터 initialResult은 변수의 타인은 Result이고 이것은 컨테이너의 요소(element)의 타입입니다. nextPartialResult 두번째 파라미터 nextPartialResult는 요소들을 어떻게 병합할지 정의하는 파라미터입니다. 해당 파라미터의 타입은 클로져이고 ..
· Swift🐤
enumerated()메소드는 Array 또는 String 구조체에 정의된 메소드입니다. 배열의 인덱스와 인덱스의 해당하는 값들을 한 쌍으로 묶은 값들의 연속을 EnumeratedSequence 타입으로 반환합니다. for (n, c) in "Swift".enumerated() { print("\(n): '\(c)'") } // Prints "0: 'S'" // Prints "1: 'w'" // Prints "2: 'i'" // Prints "3: 'f'" // Prints "4: 't'" 위에 코드와 같이 for문과 함께 사용됩니다. 앞에 변수 자리(n)에는 인덱스의 값이 할당이 되고 뒤에 변수 자리(c)에는 인덱스에 해당하는 값이 할당됩니다. enumerated() 메소드를 사용하게 된다면 반복문 안..
· Swift🐤
오늘은 swift에서 where라는 키워드에 대해서 공부해보겠습니다. where 키워드는 제네릭 타입이나 extension에서 사용되어 특정 제약을 지정하는 데에 활용됩니다. 여기서 특정 제약이라고 하는 것을 예시를 통해 설명하겠습니다. 제네릭 타입에서 where 키워드사용 설명을 위해 제네릭 함수를 가져왔습니다. func printIfEqual(value1: T, value2: T) { if value1 == value2 { //error: "Binary operator '==' cannot be applied to two 'T' operands" print("\(value1) is equal to \(value2)") } else { print("\(value1) is not equal to \(va..
· Swift🐤
함수(Function) VS 메소드(Method) 함수와 메소드를 구분 없이 혼용하는 경우가 있을 수 있습니다. 유사한 개념이지만 함수는 특정 작업을 수행하기 위한 코드들의 묶음이라고 할 수 있고 swift에서의 메소드 같은 경우는 클래스(class), 구조체(struct), 열거형(enum) 내부에 정의된 함수라고 할 수 있습니다. 메소드의 종류 Instance 메소드 타입의 객체를 생성하여 접근할 수 있는 메소드 메소드(default) 기본 메소드로 객체를 생성하여 해당 메소드에 접근이 가능하고 자식 클래스에서 override가 가능한 메소드입니다. class TestA{ func defaultMethod(){ print("A: defaultMethod") } } class TestB: TestA{ ..
· Swift🐤
오늘은 열거형에 대해서 학습해보도록 하겠습니다. 열거형에 대한 내용이 많이 언급되지만 확실하게 어떻게 사용하는지 왜 사용이 되는지 알아보도록 하겠습니다. 열거형 열거형은 "서로 관련된 데이터들을 묶어 나타내는 자료형"입니다. 열거형은 언제 사용될까? 제한된 선택지를 주고 싶을때 정해진 값 외에는 입력받고 싶지 않을 때 예상된 입력 값이 한정되어 있을 때 위에 사용하는 3가지 예시를 보면 선택의 범위를 한정한다는 공통점을 가지고 있습니다. 예를 들어 방위를 생각해보겠습니다. 방위에는 동쪽, 서쪽, 남쪽, 북쪽으로 네가지만 존재합니다. 하나를 골라야 한다면, 4가지 중 하나를 골라야 할 것입니다. 이것을 swift 열거형으로 표현해보겠습니다. enum Azimuth { case north case south..
· Swift🐤
처음 프로그래밍에 대해서 배울 때 전역 변수, 지역 변수를 접했을 때 사용하기 편한 전역변수만 사용하고 싶은데, 선생님 아니면 선배들은 그러면 안 된다는 소리를 자주 듣곤 했습니다. 교재에서는 이것을 "스파게티 코드??"라고 말하긴 하는데 직접 와닿진 않았습니다. 그래서 이번에 그 이유에 대해서 한번 찾아보았습니다. Global VS Local 프로그래밍을 배우다 보면 변수를 선언하는 위치에 따라 전역변수, 지역변수로 나뉘게 됩니다. 이렇게 영역을 나누는 이유는 크게 4가지로 나눌 수 있습니다. 1. 변수의 범위 제한 전역변수는 프로그램 전체에서 접근이 가능하여 어디서든 사용이 가능하고 지역 변수의 경우 생성된 지역 내부에서만 접근이 가능하게 합니다. 이렇게 범위를 제한함으로써, 프로그램을 작성함에서 있..
성실농장주
'Swift🐤' 카테고리의 글 목록