소소한 일상과 잡다한 정보
반응형

APPLE/Swift 문법 20

[ 기초 문법 ] 고차함수 ( map, filter, reduce )

이번에는 고차 함수에 대해서 확인을 해보도록 하자. 고차 함수 다른 함수를 전달인자로 받거나 함수 실행의 결과를 함수로 반환하는 함수 Swift의 함수는 일급 객체이기 때문에 함수에 전달 인자로 전달할 수 있고, 함수의 결과 값을 반환할 수도 있다. Swift에서 제공하는 고차 함수는 map, filter, reduce 3가지가 있고, 모두 컬렉션 타입에 구현이 되어 있다. 대략적인 고차함수의 정의에 대해 알아봤다. 이 내용을 토대로 고차 함수의 종류를 하나씩 살펴보도록 하자. map 컨테이너 내부의 기존 데이터를 변형하여 새로운 컨테이너를 생성한다. 자신을 호출할 때에 매개변수로 전달된 함수를 실행하여 그 결과값을 다시 반환해준다. 상수 numbers 배열을 선언하였고, 배열의 초기값으로 2, 4, 6..

APPLE/Swift 문법 2022.08.25

[ 기초 문법 ] Closure

이번에는 Closure에 대해서 확인을 해보도록 하겠다. Closure 참조 타입이고, 코드에서 전달 및 사용할 수 있는 독립 기능 블록이며, 일급 객체의 역할을 할 수 있음. 일급 객체 : 전달인자로 보낼 수 있고, 변수/상수 등으로 저장허거나 전달할 수 있으며, 함수의 반환값이 될 수도 있다. 클로저는 이름 없는 함수, 익명 함수를 지칭한다. ( named closure, unnamed closure ) 클로저는 2가지를 포함하지만 보통 unnamed closure를 말한다. 클로저에 대한 간략한 정의에 대해서 확인해봤다. 클로저의 사용 방법에 대해서 확인해보도록 하자. { 매개변수 -> 리턴 타입 in 실행구문 } 클로저는 익명 함수라서 func 키워드를 사용하지 않고, 클로저는 헤드와 바디로 이루..

APPLE/Swift 문법 2022.08.24

[ 기초 문법 ] try-catch

이번에는 오류 처리르 위한 try-catch에 대해서 확인을 해보려고 한다. try-catch 프로그램 내에서 에러가 발생한 상황에 대해 이를 복구하는 과정 런타임 에러가 발생한 경우 발생(Throwing) / 감지(catching) / 전파(propagating) / 조작(manipulating)을 지원하는 1급 클래스를 제공한다. 프로그램에서 개발자가 원하는데로 모든 기능이 제대로 작동한다고 100% 장담할 수 없다. 예를 들어 디스크에 파일을 저장하는 것을 생각해보면, 디스크의 용량이 꽉차서 파일을 저장 못할 수도 있고, 쓰기 권한이 없어서 파일을 저장할 수가 없을 수도 있다. 이렇게 파일을 디스크에 저장하는 간단한 기능에도 오류가 발생할 수 있는 가능성이 여럿 존재한다. 오류 처리 기능을 통해 이..

APPLE/Swift 문법 2022.08.24

[ 기초 문법 ] 옵셔널 체이닝

이번에는 옵셔널 체이닝에 대해서 내용 확인을 진행해보려고 한다. 옵셔널 체이닝이란? 옵셔널에 속해 있는 nil 일지도 모르는 프로퍼티, 메소드, 서브 스크립션 등을 가져오거나 호출할 때 사용할 수 있는 일련의 과정 약간 옵셔널 바인딩과 개념이 비슷하다고 볼 수 있다. 간단한 예제를 통해서 옵셔널 체이닝에 대해서 확인을 해보도록 하자. FoodCourt 라는 푸드코드 구조체를 생성하였다, FoodCourt 구조체 안에는 FoodCourt의 이름을 상수로 선언하였고, 직원 구조체인 Employee를 가져온 employee 변수를 생성하였다. 직원이 없을 수도 있음을 가정하에 employee 변수는 옵셔널로 선언을 하였다. koreanfood 라는 FoodCourt의 인스턴스를 생성했고, name을 비비고, ..

APPLE/Swift 문법 2022.08.23

[ 기초 문법 ] 열거형

이번에는 계속 그전에 기초 문법을 작성할 때에 계속해서 열거형 열거형 언급을 했었는데 제대로 작성을 하지 않았기 때문에 이번에는 열거형에 대해서 작성을 해보도록 하자. 열거형 연관성이 있는 값들을 모아 놓은 것 예를들어 프로그래밍 언어 ( C언어, 파이썬, java, c++ 등 ) 열거형의 사용은 enum 사용 C언어의 경우 값의 집합이지만 Swift에서는 값을 처음에 제공하지 않고 사용할 수 있다는 차이점이 있다. 초기 케이스 값을 제공하기 위해 initializer를 정의할 수도 있다. 표준 기능을 제공하기 위해 프로토콜을 준수할 수 있다. 대략적으로 열거형의 정의에 대해서 확인을 해보았다. 쉽게 연관이 있는 내용들의 값의 집합이라고 생각하면 편하게 이해를 할 수 있을 것 같다. enum 사용 방법 ..

APPLE/Swift 문법 2022.08.22

[ 기초 문법 ] Extension

이번에는 스위프트에서 강조하는 확장의 기능에 대해서 확인해보도록 하자. 스위프트에서 왜 강조를 하는지 모르겠지만.. 그냥 다른 언어에서는 약간 다르게 활용하는 extension을 좀더 편하게 쓸 수 있다는 것을 강조하는 것 같다.. 공부를 해보고 좀 활용을 해보니까 굳이?? 이렇게 강조를 하면서 설명을 할 이유인가 하는.. 왜냐면 어차피 C나 JAVA 에서도 비슷한 내용은 있으니까... 그래도 우선 Swift의 Extension에 대해서 한번 알아보도록 하자. extension 기존의 클래스, 열거형, 구조체, 프로토콜에 새로운 기능을 추가하는 기능 익스텐션이 타입에 추가할 수 있는 기능 연산 타입 / 연산 인스턴스 프로퍼티, 타입 메소드, 인스턴스 메소드, 이니셜라이저 서브스크립트, 중첩타입, 특정 프..

APPLE/Swift 문법 2022.08.22

[ 기초 문법 ] Protocol

이번에는 Protocol에 대해서 알아보려고 한다. Protocol 특정 역할을 하기 위한 메소드, 프로퍼티, 기타 요구사항 등의 청사진을 정의 구조체, 클래스, 열거형은 프로토콜을 채택해서 기능을 실행하기 위한 프로토콜의 요구사항을 실제로 구현할 수 있다. 프로토콜이 요구하는 사항을 모두 충족하면 해당 타입이 채택한 프로토콜을 준수할 수 있다고 할 수 있다. 대략적으로 정리를 하면 프로토콜은 일종의 규약이다. 즉 해당 규약을 지켜야 한다고 생각하면 된다. 예를들어 인터넷 통신 프로토콜인 TCP/IP인 경우에 인터넷 통신을 할 수 있도록 지켜야하는 규약인 것처럼 해당 프로토콜을 채택하려면 프로토콜의 내용을 지켜야 한다는 내용으로 이해하면 될 것 같다. 그럼 이제 protocol의 사용 방법에 대해서 알아..

APPLE/Swift 문법 2022.08.19

[ 기초 문법 ] guard

스위프트 기초 문법에 관련된 내용을 포스팅을 하면서 guard에 대한 내용은 이후에 언급을 한다고 작성했었다. 따라서 이번에는 guard 문에 대해서 알아보도록 하자. guard 뭔가를 검사하여 그 다음에 오는 코드를 실행할지 말지 결정하는 것 guard 문에 주어진 조건문이 거짓일 때에 구문이 실행된다. 주로 guard문을 통해 특정 조건을 만족하지 않으면 이후 코드를 실행하지 않도록 방어 코드로 많이 사용한다. guard 문에 대한 정의에 대해서 우선 알아봤다. 그럼 guard문의 사용 방법에 대해서 알아보도록 하자. guard 조건 else { 조건이 false 이면 else 구문이 실행된다. return or throw or break를 통해 이후 코드가 실행이 되지 않도록 한다. } 사용 방법에..

APPLE/Swift 문법 2022.08.19

[ 기초 문법 ] Assert / Preconditions

이번에는 Assert에 대해서 확인을 해보도록 하자. Assert 특정 조건을 체크하고, 조건이 성립되지 않으면 메시지를 출력하게 할 수 있는 함수 assert 함수는 디버깅 모드에서만 작동하며, 주로 디버깅 중 검증을 위하여 사용한다. 약간 Oracle 프로시저에서 exception 을 주는 그런 기능으로 이해하면 편할 것 같다. 해당 내용에 대해서 우선 PlayGround 로 간단히 확인을 해보도록 하자. 가장 간단하게 assert 예제에 대해서 확인을 진행해 보았다. 우선적으로 number 변수에 1을 대입하였고, 첫 assert 에서는 에러가 표기되지 않았다. number가 1이기 때문이다. 따라서 number를 2로 바꾸었고, 이후에 assert 를 동일하게 표현하되, 뒤에 에러 문구를 추가를 ..

APPLE/Swift 문법 2022.08.17

[ 기초 문법 ] 타입 캐스팅

이번에는 타입 캐스팅 관련된 내용에 대해서 확인을 해보려고 한다. 딱히 난이도가 있는 내용은 아니고, Swift를 사용하면서 자주 사용하는 부분이니 알아두면 좋을 것 같다. 타입 캐스팅 인스턴스의 타입을 확인하거나 어떠한 클래스의 인스턴스를 해당 클래스 계층 구조의 슈퍼클래스나 서브클래스로 취급하는 방법 인스턴스의 타입을 확인할 수도 있고 인스턴스 클래스 타입을 슈퍼클래스 또는 서브클래스 타입처럼 다루기 위해 사용하는 것이라고 이해하면 편하다. Swift에서는 타입 캐스팅을 is / as 로 사용한다. is / as 는 값의 타입을 확인하거나 값을 다른 타입으로 변환하는데 사용한다. 타입 캐스팅에 대한 간단한 정의부터 알아보았다. 이제 코드를 통해서 내용을 간략히 확인해보도록 하자. 좌측 이미지는 타입 ..

APPLE/Swift 문법 2022.08.16

[ 기초 문법 ] 상속

이번에는 클래스의 상속에 대한 개념에 대해서 알아보도록 하자. 이전에 클래스와 구조체의 차이에 대해서 확인을 하면서 클래스만의 고유의 상속에 대해서 알아보려고 한다. 상속 상속이란 부모가 자식에게 재산을 물려주는 행위라고 생각하면 편하다. 스위프트에서 상속은 다른 클래스로부터 메소트, 프로피터 또는 다른 특성을 상속받는 것을 의미한다. 한 클래스가 다른 클래스를 상속 받을 때에 상속받는 클래스는 자식 클래스 또는 서브 클래스라고 한다. 상속하는 클래스는 슈퍼클래스 또는 부모 클래스라고 한다. 상속은 스위프트에서의 다른 타입과 클래스를 구별짓는 클래스만의 특징이다. 서브 클래스는 슈퍼 클래스로부터 물려받는 메소드, 프로퍼티, 서브 스크립트를 호출 할 수 있다. 오버라이딩을 통해서 물려받은 메소드, 프로퍼티..

APPLE/Swift 문법 2022.08.14

[ 기초 문법 ] 프로퍼티

이번에는 프로퍼티에 대해서 조금 심오하게 알아보도록 하자. 프로퍼티 클래스, 구초제 또는 열거형 등에 관련된 값을 의미한다. 프로퍼티의 종류로는 저장 프로퍼티 / 연산 프로퍼티 / 타입 프로퍼티가 있다. 저장 프로퍼티 : 인스턴스의 변수 또는 상수 연산 프로퍼티 : 값을 지정하는 것이 아니라 특정 연산을 수행한 후 나오는 결과값을 의미한다. 타입 프로퍼티 : 특정 인스턴스에서 사용되는 프로퍼티가 아닌 특정 프로퍼티에서만 사용되는 프로퍼티를 의미 프로퍼티의 정의에 대해서 간단하게 알아봤고, 이렇게 글로만 작성할 경우에는 많이 헷갈릴 수 있음으로... ( 필자도 처음에 글로만 접했을 때는 아무것도 이해를 하지 못했다.. ) 이렇게 대략적으로 프로퍼티에 대해서 알아봤고, 이제 하나하나 뜯어보면서 진행을 해보도..

APPLE/Swift 문법 2022.08.11

[ 기초 문법 ] Init

이번에는 초기화 구문인 Init에 대해서 알아보도록 하자. 이전에 구조체와 클래스에 대한 내용을 확인했다. 이전 글을 확인해보면 알겠지만, 구조체와 클래스는 초기화 선언이 필요하다. 이런 초기화는 initializer 라고 해서, 클래스와 구조체 또는 열거형 인스턴스를 사용하기 위한 필요 과정이라고 생각하면 된다. 여태까지 이미 초기화를 통해서 사용을 했었지만, 이번에는 편하게 사용하여, 다양하게 활용할 수 있는 방법에 대해서 알아보려고 한다. Init 즉, 초기화는 인스턴스의 프로퍼티마다 초기값을 설정해 주고, 새 인스턴스를 사용하기 전에 필요한 설정을 해주기 위해서 사용한다. 초기화는 특정 타입의 새로운 인스턴스가 호출될 때에 생성이 된다. 이렇게 글로만 설명하면, 뭔가 이해가 부족하기 때문에 한번 ..

APPLE/Swift 문법 2022.08.10

[ 기초 문법 ] 구조체와 클래스

이번에는 구조체와 클래스에 대해서 알아볼 예정이다. 스위프트에서는 구조체와 클래스가 공존하고 있다. 구조체와 클래스는 프로그래머가 용도에 맞게 사용하고자 할 때에 상당히 용의하게 쓰인다. 구조체와 클래스는 사용법 자체가 거의 비슷하다. 사용법은 비슷하지만 약간의 차이가 있는데 그것은 바로 구조체의 인스턴스는 값 타입이고, 클래스의 인스턴스는 참조타입이다. 인스턴스에 대해서는 추가적으로 이후에 좀더 자세하게 다룰 예정이고, 이번에는 구조체와 클래스에 대한 내용에 대해서 간략히 짚어보고 진행을 할 예정이다. 구조체 구조체의 사용의 문법은 아래와 같다. struct 구조체 이름 { 프로퍼티와 메소드 } 이렇게 사용을 할 수 있다. 프로터피와 메소드를 합쳐서 구조체와 클래스의 멤버라고 말한다. 추가적으로 변수는..

APPLE/Swift 문법 2022.08.09

[ 기초 문법 ] 옵셔널

이번에는 옵셔널에 대해서 알아보도록 하자. 옵셔널이 뭐 Swift에서 특이한 매우 좋은 기능이라고 하는데.. 아직까지는 정확히 잘 모르겠다. 이 글을 작성하는 동안에도 Swift특유의 기능이라고는 생각이 안들기 때문에... 하지만 기본적인 개념에 대해서는 알아둘 필요가 있기 때문에 한번 진행을 해보려고 한다. 옵셔널 옵셔널 ( 선택적인? ) 기능. 스위프트의 가장 큰 기능 중 하나로 값이 있을 수도 있고, 없을 수도 있다. 옵셔널 타입을 사용하려면 기본 데이터 타입 뒤에 ? 를 붙이면 된다. 옵셔널로 정의한 변수는 옵셔널로 정의하지 않은 변수와 서로 다르다. 우선 대략적인 옵셔널의 정의에 대해서 알아봤다. 솔직히 이렇게 진행한다고 하면... 아무리 필자라도 잘 모르겠다. 한번 실습을 통해서 알아보도록 하..

APPLE/Swift 문법 2022.08.08

[기초 문법] 반복문

이전에는 조건문인 swift와 if문에 대해서 알아봤다면 이번에는 반복문에 대해서 알아보도록 하자. 우선 스위프트에서 제공하는 기본적인 반복문에 대해서 간략히 확인하고 넘어가보자. 반복문 반복적으로 코드가 실행되게 하는 구문을 의미한다. 특정 코드를 50번 호출해야하는 구문이 있는데 반복문이 없으면 함수를 50번 호출하여야 하고, 함수 호출 라인이 50줄이 되는 비효율적인 상황이 발생한다. 반복문의 종류 : for - in , while , repeat-while 반복문의 종류로는 기본적으로 다른 언어에서 가지고 있는 for 문, while문이 있으며, repeat-while은 타 언어에서 사용하는 do-while문과 동일한 문법이라고 생각하면 된다. 우선 하나도 모른다는 가정하에 설명을 진행하도록 하겠..

APPLE/Swift 문법 2022.08.05

[기초 문법] 함수 ( func )

이전에는 컬렉션타입까지 알아봤으면, 이번에는 함수에 대해서 알아보자. 함수 작업의 가장 작은 단위이자 코드의 집합 사용 이유 : 반복적인 작업을 피할 수 있다. Swift에서 함수의 크기에 대해서 명확하게 정의를 하지 않았지만 1개의 기능에 대해서 반복적으로 사용할때 함수라고 생각하면 된다. Swift에서 언급하는 함수의 정의에 대해서 대략적으로 알아봤다. 그럼 이제 함수를 어떻게 사용하는지 알아보자. func 함수명 (파라미터 이름 : 데이터 타입 ) -> 반환 타입 { return 반환값 } 함수의 문법 사용 순서이다. 보통의 함수는 이렇게 사용을 한다. 함수의 활용에 대해서 이제 알아보도록 하자. A와 B의 숫자를 받아서 두개의 숫자를 더하는 함수를 구현하였다. 이처럼 함수를 사용할 때에 파라마터의..

APPLE/Swift 문법 2022.08.04

[기초 문법] 컬렉션 타입

저번에 상수와 변수 / 데이터 타입에 대해서 알아봤다. 이번에는 컬렉션 타입에 대해서 알아보도록 하자. 기본적으로 컬렉션 타입은 C나 java에서 얘기하는 배열, ArrayList라고 생각하면 편할 것 같다. 처음 개발 언어를 Swift로 접근을 진행한 사람들을 위해서 배열의 간단한 내용을 작성하고 넘어가려고 한다. 배열 1 묶음 이라고 생각하면 편함. var a : Int = 10 / var b : Int = 20 / var c : Int = 30 이런 값들을 여러 개의 변수를 사용해야하니 불편하다.. 이를 위해 묶음으로 다루는 내용을 배열이라고 함 var a : [Int] = [10, 20, 30 ] 이렇게 한번에 표현을 할 수 있고, 넣다 뺐다 사용할 수 있다. 참고로 필자의 간략한 설명이 이해가 ..

APPLE/Swift 문법 2022.08.04

[기초 문법]상수와 변수 / 데이터 타입

이전에 Playground 실행을 진행해봤다. 자 그럼 이제 상수와 변수에 대해서 한번 알아보도록 하자. 상수와 변수 상수 : 변하지 않는 값. ( 일정한 값 ) 상수 선언 : let 변수 : 변하는 값. ( 유동적인 값 ) 변수 선언 : var 이라고 이해하면 편하다. 즉, 상수와 변수는 각각의 특정 공간에 값을 넣은 이후 해당 값을 변경할 수 있으면 변수, 변경할 수 없도록 막아두고 싶으면 상수로 선언을 하면 된다. 상수로 만들고 싶으면 let 을 활용하고, 변수로 만들고 싶으면 var 를 선언하면 된다. 그럼 이제 플레이그라운드를 활용해서 만들어 보도록 하자. let 과 var 를 선언하였다. number2라는 이름의 Integer 즉, Int ( 숫자형 ) 를 선언하였고, number3라는 200..

APPLE/Swift 문법 2022.08.02
반응형