본문 바로가기

공부73

[스위프트] 함수(파트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.
[스위프트] 제어 전달문 (break, continue, return 특징 및 차이) 일반적으로 언어가 작성되고 실행되는 순서 및 방향들(흐름)을 제어하는 것을 흐름 제어 구문, 흐름 제어문, 제어 흐름 여러가지로 부르는데, 필자는 흐름 제어 구문으로 칭하겠다. 흐름 제어 구문의 종류에는 여러가지가 있는데 일반적으로는 다음의 세가지를 일컫는다. • 반복문(Loop Statements) • 조건문(Conditional Statements) • 제어 전달문(Control Transfer Statements) 이중 제어 전달문에 대해 알아보자. 제어 전달문 혼자서는 못쓰고 다른 구문들과 함께 쓰며 흐름을 바꿀 때 사용되는 구문이다. 아래를 보면 바로 어떤건지, 무슨말인지 이해가 될 것이다. • break • continue • fallthrough • return 이 네가지가 제어전달문이다. .. 2023. 7. 3.
[스위프트] 조건문(if, guard, switch) 종류와 사용법 일반적으로 언어가 작성되고 실행되는 순서 및 방향들(흐름)을 제어하는 것을 흐름 제어 구문, 흐름 제어문, 제어 흐름 여러가지로 부르는데, 필자는 흐름 제어 구문으로 칭하겠다. 흐름 제어 구문의 종류에는 여러가지가 있는데 일반적으로는 다음의 세가지를 가장 많이 얘기한다. • 반복문(Loop Statements) • 조건문(Conditional Statements) • 제어 전달문(Control Transfer Statements) 이중 조건문에 대해 알아보자. 조건문 if 가장 많이 쓰이는 구문중 하나이다. 조건식을 주고 조건식이 참일 경우 실행, 거짓이면 건너가는데 뒤에 else if문이 있다면 else if문으로 간다. 만약 else if도 만족 못한다면 else문으로 간다. else if와 else.. 2023. 7. 3.
728x90