반응형

전체 글 186

Swift | 클로저(Closure)에 관하여 -1

안녕하세요오늘은 클로저를 알아봅시다!  클로저 뜻우선 구글 번역기로closure의 뜻을 알아보면'폐쇄'라고 나옵니다  변수에 함수가 갇혀있는 뜻이라고 생각하면 편할것 같습니다  타 언어 프로그래밍을배우셨다면 클로저를 익명함수, 람다와 많이 유사한 부분이라고 느낄 수 있습니다 저또한 C#에서 많이 보던 녀석이라.. 낯설지 않았답니다 클로저는 정의된 모든 상수와 변수에 대한 참조를 캡처하고 저장이 가능합니다이러한 상수와 변수를 Closing over이라고 합니다  제가 느낀바로는 함수와 클로저의 차이는 함수는이름이 있는 코드의 묶음이여서 다른 코드에서 함수이름으로 호출하여 사용이 가능한 형태라고 생각이 들어요 클로저는굳이 함수의 이름이 없어도 호출할 수 있는 형태라고 생각이 들어요 앞에서 배웠듯이함수는 일급..

Swift 2024.05.21

Swift | self vs Selft에 관하여

안녕하세요!오늘은 self 와 Self에 관하여정리하고자 합니다 쉬우니까바로 습득이 가능하실거에요! 지금까지 소문자 self는 많이 사용했었답니다 특히 클래스에서 많이 사용했던걸로 기억하는데요보통 인스턴스나 값 자체를 치환하는 경우에도 사용합니다 코드를 통해서 알아보고자 합니다 self vs Self| 우선 소문자 self에 대해서 알아보고자 합니다self인스턴스를 가르키기 위해 사용하는 경우 class Person { var name: String init(name: String) { self.name = name }} 여기서 self는현재 객체(instance)를 가리킵니다인스턴스 내부에서 해당 인스턴스의 속성이나 메서드에 접근이 가능합니다 클래스 내부에서 보통 속성과 매개변수 이름이 동일한..

Swift 2024.05.21

Swift | Method Dispatch관하여

안녕하세요오늘은 공식문서에는 없지만Method Dispatch에 대해서 알아보고자합니다 Method Dispatch| 공식문서에는 없지만 이걸 남기는 이유는 컴퓨터가 동작하는 방식에 대해서 더 잘 이해하기 위해서정리했습니다 :) 우선 내가 알고있는 지식이라곤 컴파일 타임은 정적 타입 검사일 때런타임에는 동적 타입 검사이고컴파일은 기계어로 이해할 수 있는 0과 1로 변환되는 과정이며런타임은 컴파일을 거친 코드인 기계어가 사용자가 사용하는 순간이라고 알고 있었답니다 강의에서 자세하게 풀이해줬기 때문에좀 더 세세하게 나뉘고 있고 런타임과 컴파일 타입에서 일어날 수 있는 문제점에 대해서 한 번 더 고찰할 수 있었던 강의가 아닌가 싶었습니다 그리고 메서드 디스패치는 간단히어떤 메서드들의 특징에 대해서 다루는 시간..

Swift 2024.05.21

Swift | 고차함수 filter / reduce 관하여

안녕하세요고차함수 나머지 부분도 다루고자 합니다 filter와 reduce에 대해서 정리를 해봅시다 filter|특정조건을 만족하는 요소들만 걸러내는 함수새로운 컬렉션을 반환하고 원본 컬렉션의 요소 중 조건을 만족하는 요소들로 이루어진 배열을 생성합니다 기존 배열 등 각 아이템 조건을 확인하고 참을 만족하는 아이템을 걸러내서 새로운 배열을 만들어냅니다(각 아이템을 필터링해서 걸러내서 새로운 배열을 만들 때 사용합니다)   .filter로 통해서 조건을 통해서 배열을 반환하는걸 볼 수 있습니다  클로저를 사용하는 이유는더 간결하게 작성할 수 있기 때문입니다  evenNumbersArray같은 경우 첫 번째 필터 조건이 2로 나눴을 때 0인 경우이므로2,4,6,8로 줄어들고두 번 째 필터 조건이 5보다 작아..

Swift 2024.05.21

Swift | 고차함수 map / faltmap / compactmap에 관하여

안녕하세요 오늘은고차함수에 관하여 정리하고자 합니다 map/flatmap/compactmap 여러가지가 있는데요여기에 관하여 특징과 사용방법에 관하여 알아볼까요? map|각 요소에 대해 동일한 연산을 수행하고 그 결과를 새로운 컬렉션으로 반환하는 고차함수   함수를 인자로 받아 각 요소에 함수를 적용하고 그 결과 새로운 컬렉션을 반환하기 때문에코드의 간결성과 가독성, 재사용이 용이하고 컴파일러 최적화를 하기위한 성능에 좋다는 장점이 있습니다 그리고 기존 데이터를  변형하여 새로운 컨테이너를 만드는데 기존 데이터는 변경되는게 없답니다  map 기본형식  T타입의 transform을 받아 새로운 타입의 T타입의 컨테이너를 생성한다는 이야기랍니다예제를 통해서 좀 더 친숙해보자구용! 좀 더 추가적으로 말하자면T..

Swift 2024.05.21

Swift | 프로토콜(Protocols)에 관하여 -2

안녕하세요저번에 이어서 프로토콜을 좀 더 자세히 알아보고자 합니다  Protocol| protocol-1에서 다루었던 것들은기본적으로 사용하는 이유와전반적으로 기본적으로 속성과 메서드들을 정의하고 사용하는 방법과 자주 사용하진 않는다고 하는 Protocol 생성자와 실패 가능 생성자에 대해서 다루었습니다 우선 저번에도 말했다시피 공통된 함수를 만들어 활용할 수 있는 효율 좋은 녀석이라고 말했습니다이번에 강의를 듣고 정리하는 부분은 프로토콜은 1급 객체라고 알 수 있었고 타입 캐스팅을 사용할 수 있는 부분과신기하게도 반드시 구현해야하는걸로 알고 있었던 프로토콜 메서드를@objc로 선언하면 선택적으로 구현해도 되고 안해도 되는 걸로 변경이 된다는 부분을 알게되었답니다 :) 마지막으로 프로토콜 확장에 적용하여..

Swift 2024.05.20

Swift | 프로토콜(Protocols)에 관하여 -1

안녕하세요오늘은 프로토콜에 대해서 알아보고자 합니다 프로토콜은 양이 방대하므로잘 이해해야하는 부분인것 같습니다 Protocol|프로토콜 정리된 수 많은 게시글을 보면 청사진이다라고 말하지만 내 기준에서 이해하기엔 프로토콜을 정의만 한 다음프로토콜을 채택한 곳에서 구현을 할 수 있다라고 정의를 내렸다 사실 Protocol이 C#과 비슷하게 사용하는건 Interface라고 생각이 들었다인터페이스도 동일하게 구현없이 공통된 목적을 가진 함수를 만들고구체적인 구현은 채택한 곳에서만 사용하고 있기 때문입니다 예를 들어서 쉽게 설명하자면게임 중 대전게임이나 몬스터를 공격할 때각각의 능력이나 눈에 보이는 모션은 다르지만공통적으로 공격한다라는 함수를 구현해야하기 때문에Attack()과 같은 공통된 함수를 만들어야합니다..

Swift 2024.05.20

Swift | 확장(extension)에 관하여

안녕하세요!오늘은 확장에 대해서 정리하고자 합니다 한 번 훑어봤을 때확장은 c#에서도 있지만 static keyword를 사용했던걸로기억이 나는데요 확장|extension 클래스 / 구조체 / 열거형 / 프로토콜새로운 기능을 추가할 수 있게 해주는 기능입니다 추가할 수 있는 기능이 많은데요 메서드 추가계산된 속성추가서브스크립트 추가초기화 메서드 추가중첩 타입 추가기존 타입을 프로토콜 준수하도록 만들 수 있음 새 기능을 추가는 할 수 있지만기존 기능을 재정의 할 수는 없습니다+클래스 한정하여 지정생성자는 본체에서 인스턴스를 찍어내는 중요한 역할을 하므로 확장에서 구현하지 못함(사실상 가능함) 하지만클래스의 경우 편의 생성자만 추가가 가능하고 지정생성자 소멸자는 반드시 본체에 구현을 해야합니다 쉽게 말해서 ..

Swift 2024.05.20

Swift | 타입캐스팅(Type Casting)에 관하여 - is / as

안녕하세요!오늘은 타입캐스팅(Type Casting)에 관하여알아보고자 합니다 타입캐스팅|Type Casting 부모 클래스에서 상속된 자식 클래스는자기 자신의 타입 + 부모클래스 타입을가지고 있어요 이유는부모 클래스의 특성을 물려받았기 떄문인데요 메서드를 오버라이딩했더라도 컴파일러가클래스의 형태에서 중요하게 여기는메서드의 이름 매개변수 타입 반환타입이 변하지 않는 한 클래스 형식이 달라지는 것은 아니기 때문입니다 이렇기 때문에 자식 클래스는 자신의 타입 대신부모 클래스 타입으로 선언하여 사용이 가능하답니다 타입 캐스팅은isas 연산자로 구현합니다 두 연산자는 값의 타입을 확인하거나값이 다른 타입으로 캐스트하는 간단한 방법을 제공하고 있답니다 이제 간단한 설명은 끝났으니코드를 통해서 알아보고자 합니다  ..

Swift 2024.05.19

Swift | 서브스크립트(Subscripts)에 관하여

안녕하세요 오늘은 서브스크립트에 관하여알아보고자 합니다:) 용어는 생소하지만코드를 보면 어? 이미 알고 있는 부분이였잖아할 수 있답니다 서브스크립트|subscripts 서브스크립트란 대괄호를 이용해서 접근 가능하도록 만든 문법이랍니다 저희가 사용했던 배열과 딕셔너리에서 사용하고 있져? Array[index]Dictionary[key:value:] 클래스 / 구조체 / 열거형도서브스크립트로 구현이 가능합니다 우선 클래스 예시 클래스에서 subscript로 get set을 구현해서사용하고 있습니다 인스턴스화 하여 불러올때data[0]으로 호출할 수 있습니다그리고 set의 파라미터는newValue도 사용이 가능합니다 set이 있기때문에 "SSSS"로 변경할 수 있는걸 확인할 수 있습니다  구조체에서도 서브스크..

Swift 2024.05.17
반응형