본문 바로가기

전체 글75

[스위프트] 클로저(Closures) 스위프트에서 클로저라는 기능은 일회용 함수를 작성할 수 있는 구문이다. 작성방식은 워낙에 다양하지만 일회용으로 함수를 작성하다 보니 함수명이 필요 없어 익명함수라고 부르기도 한다. 클로저는 이미 다른 언어들에도 존재하는 기능인데, 다른 언어에서는 다음과 같이 부른다. 자바스크립트 - 익명함수 자바 - 람다함수 파이썬 - 람다함수 아마 대충 어떤 내용이 나올지 예상이 될 것이다. 원래 클로저 자체는 세 가지를 의미한다. • 전역함수 • 중첩함수 • 클로저 표현식 여기서 살펴볼 내용은 클로저 표현식에 중점을 둘 것이다. 클로저의 표현식 우선 클로저는 기본적으로 함수이기 때문에 함수의 기본적인 형태를 따르나 일회용이기 때문에 많은 부분이 생략된다. 차차 알아가 보자. //기본적인 형식 { (매개변수) -> 반.. 2023. 7. 10.
[스위프트] defer(디퍼) 스위프트에는 defer라는 구문이 있다. 앞서 얘기한 흐름 제어 구문중 하나인데 스위프트에 있는 특이한 기능중 하나이다. defer는 "연기하다"라는 뜻을 가진 단어로 이를 생각해보면 defer구문의 기능이 무엇일지 예상이 될 것이다. 바로 일부 기능을 지연시키고자 할때 쓰는 구문이다. 하지만 이는 몇초를 지정한다던가 이런게 아니다. defer는 if나 for처럼 블럭으로 작성한다. defer는 다음과 같은 특징들을 갖는다. • defer 블럭은 defer가 들어가있는 블럭에서 가장 마지막에 실행된다.(return 이후에 실행된다.) • 만약 defer블럭을 지나지 않고 return이 실행되면 defer는 실행되지 않는다. • defer블럭이 여러개가 있다면 마지막 defer블럭부터 거꾸로 실행된다. •.. 2023. 7. 10.
[스위프트] 함수(파트3) 파트 3에서 설명할 것은 좀 어렵다. 스위프트는 함수형 언어이다. 이를 설명하기 위해 우선 일급 객체에 대해서 알아보자. 일급 객체 객체가 다음의 조건을 만족하면 해당 객체를 일급 객체로 간주한다. 객체가 런타임에도 생성이 가능해야 한다. 인자값으로 객체를 전달할 수 있어야 한다. 반환값으로 객체를 사용할 수 있어야 한다. 변수나 데이터 구조 안에 저장할 수 있어야 한다. 할당에 사용된 이름과 관계없이 고유한 구별이 가능해야 한다. 일단은 함수도 객체이므로 위의 조건들을 함수가 만족할 경우 일급함수(First-Class Function라고 한다. 또한 해당 언어는 함수형 언어로 분류된다. 그래서 스위프트가 함수형 언어인 것이다. 이제부터 일급함수의 특성을 알아보자. 일급함수의 특성 (1) - 변수나 상수.. 2023. 7. 10.
[스위프트] 함수(파트1) 함수 대부분의 언어에서 지원하는 기능으로, 프로그램 실행시에 독립적으로 작동할 수 있는 부분을 분리해 구조화한 객체이다. 일종의 캡슐화라고도 할 수 있겠다. 이렇게 작성된 함수는 어디서든 간단하게 호출해 사용할 수 있다. 그래서 같은 내용으로 실행되야 한다면 여러번 작성할 필요없이 호출을 통해 같은 소스를 실행할 수 있다. 함수의 종류 함수는 일반 함수와 사용자 정의 함수로 나눠진다. • 일반함수 : 프로그래밍 언어나 프레임워크에서 제공하는 함수. 예시)print, isEmpty등등 • 사용자 정의 함수 : 일반 함수에서 제공하지 않아 사용자가 함수의 입력과 출력, 실행될 구문을 직접 정의해 만드는 함수. 예시)로그인 정보를 받을 시 수행될 내용. 사용자 정의 함수 앞서 말했듯 일반 함수에는 간단한 기능.. 2023. 7. 9.
[스위프트] 옵셔널(Optional) 옵셔널은 이전에 Objective-c에는 없던 새로운 개념으로 스위프트의 방향성을 보여주는 기능이기도 하다. 옵셔널은 언어 레벨에서 안정성을 높이기 위해 도입한 개념으로 "값이 없을 수도 있는 데이터"를 표현하기 위한 기능이다. 여기서 우리가 중요하게 생각해야 할점은 바로 옵셔널은 에러를 막기 위해 만들어진 것이다. 아마 이렇게 생각할 수도 있다. '그냥 값이 없을수도 있는거 아닌가?' 물론 맞는 말이긴 한데 옵셔널은 값이 없음으로 인해 에러가 발생할 수 있는걸 막기 위해 존재한다는걸 생각하면 위에서 말한 "옵셔널은 에러를 막기위해 만들어진 것"이라는 말이 이해가 될 것이다. 값이 있다면 Optional(값)으로 반환되며 만약 해당 데이터에 값이 없다면 nil이 출력된다. 옵셔널 타입은 별도로 존재하지않.. 2023. 7. 8.
[스위프트] 딕셔너리(Dictionary) 사용법 & 예시 집단 자료형(Collective Types) 서로 관련이 있는 자료들을 모아서 관리하기 편하게 만든 것이 집단 자료형이다. 이때 서로 관련이 있다는 말은 자료형이 같거나 한가지 주제에 속해있는(예를들면 신체 정보 - 키, 몸무게, 나이 등) 자료들을 말한다. 집합 자료형의 종류는 다음과 같다. • 배열(Arrays) • 집합(Set) • 딕셔너리(Dictionary, 사전) 이 중 배열(Arrays)을 알아보자. 딕셔너리(Dictionary; 사전, 주로 딕셔너리라고 한다.) 딕셔너리는 데이터를 순서에 상관없이 각각 한가지 타입의 키, 값 쌍으로 저장한다. 배열과 다르게 순서가 없어, 아이템에 접근하려면 키값을 이용해 접근해야한다. 배열과 마찬가지로 count 및 isEmpty이 가능하다. 선언 및 초기.. 2023. 7. 8.
[스위프트] 튜플(Tuple) 사용법 & 예시 튜플(Tuple) 튜플은 타입의 종류에 관계없이 다양한 데이터를 넣을 수 있다. 그러나 상수적 성격을 띄기 때문에 처음 생성시에 넣은 값을 제외하고 값을 추가할 수 없다. 마치 let(상수)같다. 튜플의 특징은 다음과 같다. • 데이터 타입에 관계없이 모든 값을 섞어서 넣을 수 있다. • 한번 생성된 튜플은 수정할 수 없다. • 소괄호를 사용해 선언하기 때문에 별도의 선언문이 따로 없다. • 인덱스에 .n 으로 접근한다. • 바인딩 방식을 통해 한번에 할당도 가능하다. 이 점을 이용해 함수에서 튜플로 한번에 여러개의 값을 반환할 수 있다.(함수 부분에서 설명하겠다.) 선언 및 초기화 var tupleValue = (1, 2, 3.141592, "안녕하세요", true)//이렇게 타입을 안써도 되지만 va.. 2023. 7. 7.
[스위프트] 집합(Set) 사용법 & 예시 집단 자료형(Collective Types) 서로 관련이 있는 자료들을 모아서 관리하기 편하게 만든 것이 집단 자료형이다. 이때 서로 관련이 있다는 말은 자료형이 같거나 한 가지 주제에 속해있는(예를 들면 신체 정보 - 키, 몸무게, 나이 등) 자료들을 말한다. 집합 자료형의 종류는 다음과 같다. • 배열(Arrays) • 집합(Set) • 딕셔너리(Dictionary, 사전) 이 중 집합(Set)을 알아보자. 집합(Set) 순서(인덱스)와 중복이 없는, 같은 타입만 저장할 수 있는 집단 자료형이다. 순서가 없기 때문에 1, 2, 3, 4, 5의 순서로 생성해도 순서가 뒤바뀔 수 있다. 또한 중복이 없어서 1, 1, 1, 1, 2 로 생성하면 1, 2 로 저장된다. 스위프트에서 집합의 특징은 다음과 같다.. 2023. 7. 7.
[스위프트] 배열(Arrays) 사용법 & 예시 집단 자료형(Collective Types) 서로 관련이 있는 자료들을 모아서 관리하기 편하게 만든 것이 집단 자료형이다. 이때 서로 관련이 있다는 말은 자료형이 같거나 한가지 주제에 속해있는(예를들면 신체 정보 - 키, 몸무게, 나이 등) 자료들을 말한다. 집합 자료형의 종류는 다음과 같다. • 배열(Arrays) • 집합(Set) • 딕셔너리(Dictionary, 사전) 이 중 배열(Arrays)을 알아보자. 배열 배열은 같은 자료형의 값들을 일련의 순서(인덱스; Index)로 저장한 자료형이다. 인덱스가 있기 때문에 값을 인덱스로 찾아 바로 접근할 수 있어 편리하다. 또한 인덱스는 자동으로 생성되는 것이기 때문에 중간에 생략되거나 임의로 바꿀수는 없으나 값끼리 순서를 바꿀수는 있다. 스위프트에서 배.. 2023. 7. 3.
728x90