안녕하세요. 도미닉입니다. 오늘은 클로저에 대해서 알아보겠습니다. 클로저는 이름 없는 함수라고 할 수 있습니다. 이름 없는 함수가 굳이 왜 필요한가? 라고 의문을 가질 수 있습니다. 이러한 클로저는 매개변수와 리턴 타입, 고차함수, 변수 등에 자유롭게 사용할 수 있습니다. 클로저의 기본 타입은 아래와 같습니다. { (parameters) -> return type in statements } 함수와 비교하자면 앞에 func 함수이름 부분이 빠진 것만 빼면 크게 다르지 않은 것을 알 수 있습니다. 아래 소스는 sorted 함수에 매개변수로 클로저를 사용했습니다. reversedNames = names.sorted(by: { (s1: String, s2: String) -> Bool in return s1 ..
안녕하세요. 도미닉입니다. 오늘은 Enum 에 대해서 알아보겠습니다. Enum 은 항목을 묶어서 표현할 수 있는 타입입니다. 예를 들어 무게에는 kg, g, mg 등이 있습니다. 아래와 같이 표현할 수 있습니다. Enum 을 선언할 때는 첫 글자를 대문자로 선언해주어야 합니다. 이러한 Enum (열거형) 을 사용하면 장점이 weight 라는 단위는 mg, g, kg 중에 하나라고 단정지을 수 있습니다. 이러한 점이 별거 아닌 것 같아보일 수 있겠지만 weigth 라는 변수, 상수가 다양한 타입의 무궁무진한 값을 가질 수 있는 것에서 우리가 예측할 수 있는 값만 가질 수 있게 된다는 것은 엄청난 차이점이고 중요한 점이라고 생각합니다. 아래에서 Enum 의 다양한 사용방법을 알아보겠습니다. 1. CaseIt..
안녕하세요. 도미닉입니다 오늘은 패턴에 대해서 알아보겠습니다. 패턴이란 소스의 양을 줄여서 쓰고 읽기 쉽게 정해놓은 구조 라고 생각할 수 있습니다. 패턴 매칭이란. 코드에서 패턴을 찾아내고 활용하는 것이라고 할 수 있겠습니다. 패턴에는 두가지 큰 유형이 있습니다. 모든 종류의 값에서 성공적으로 동작하는 패턴과 런타임 안에 지정된 값에 따라서 동작하지 못하는 패턴입니다. 첫 번째 종류의 패턴은 단순 변수, 상수 및 옵셔널 바인딩에서 값을 소멸시키는 데 사용됩니다. 여기에는 와일드 카드 패턴, 식별자 패턴 및 이를 포함하는 값 바인딩 패턴 또는 튜플 패턴이 포함됩니다. 이러한 패턴에서 타입 지정하여 특정 타입의 값만 일치하도록 제한 할 수 있습니다. 두 번째 종류의 패턴은 전체 패턴 일치에 사용되며, 여기서..
안녕하세요. 도미닉입니다. 오늘은 오버로딩과 오버라이딩에 대해서 알아보겠습니다. 오버로딩(overloading) 이란 같은 이름의 메소드를 매개변수가 다르게 여러번 선언할 수 있는 것을 의미합니다. 오버로딩에는 생성자 오버로딩과 메소드 오버로딩이 있습니다. init 생성자를 매개변수 숫자를 다르게 해서 두번 선언했습니다. 이러한 것을 생성자 오버로딩이라고 합니다. eat 메서드를 매개변수 숫자를 다르게 해서 두번 선언했습니다. 이러한 것을 메서드 오버로딩이라고 합니다. 오버라이딩(overriding) 은 상위 클래스에서 선언한 메서드를 하위 클래스에서 재정의해서 사용하는 것을 의미합니다. 위에 오버로딩의 예제를 들었던 소스에서 People 클래스의 eat 메서드를 선언했었습니다. Student 클래스는 ..
안녕하세요. 도미닉입니다. 프로토콜과 다형성에 대해 정리해보겠습니다. 프로토콜은 특정 역할을 하기 위해 메서드, 프로퍼티 등을 정의하는 것입니다. 프로토콜을 채택하면 해당 프로토콜에서 정의되있는 메서드, 프로퍼티를 무조건 구현해주어야 합니다. 위와 같이 Food 라는 프로토콜에 eat 메서드를 정의하였습니다. 스파게티 구조체가 Food 프로토콜을 채택하였으나 eat 메서드가 존재하지 않아서 오류가 발생하였습니다. 동그라미를 클릭해서 오류 해결을 자동으로 요청하니 아래와 같이 eat 메서드가 생기고 구현부가 생성되었습니다. 위와 같이 스파게티, 햄버거, 피자 구조체를 Food 프로토콜을 채택해서 작성했습니다. 이제 스파게티, 햄버거, 피자는 Food 프로토콜을 따르기 때문에 무조건 eat 메서드가 있다고 ..
안녕하세요. 도미닉입니다. 오늘은 TDD 를 이용해 vmgit 을 제작해보겠습니다. 가상으로 git 처럼 동작하는 프로그램을 Swift 로 작성해보려고 합니다. TDD 는 처음에 요구사항을 작성한 뒤에 아래의 3단계를 반복하며 개발하는 기법입니다. 요구사항을 테스트로 작성 -> 테스트를 통과할 최소한의 소스 작성 -> 리펙토링 우선 요구사항을 도출합니다. 1. init : init 명령어 뒤에 저장소명을 명령어를 실행하면 이름으로 저장소 공간을 생성합니다. 2. status local : local에 있는 저장소 내부 파일 상태를 출력합니다. 만약 저장소 이름이 없으면 전체 저장소 목록을 출력합니다. 3. checkout : 해당 저장소를 선택한 것을 표시하기 위해서 프롬프트 뒤에 저장소 이름을 붙여서 ..
앞에서 소개드린 구조체 안에 내용 중에 프로퍼티에 대해서 먼저 알아보겠습니다. 프로퍼티는 저장 프로퍼티, 연산 프로퍼티, 타입 프로퍼티로 나뉘어집니다. 첫번째로 저장 프로퍼티는 가변 프로퍼티와 불변 프로퍼티로 나뉩니다. 구조체는 기본적으로 모든 저장 프로퍼티를 포함하는 이니셜라이저가 자동으로 생성됩니다. 위에 Cat 구조체에서 그것을 사용해보았습니다. 저장 프로퍼티는 기본값을 설정할 수도 있으며 기본값이 있는 경우 이니셜라이저 없이 인스턴스 생성이 가능합니다. struct Coordinate { var x: Int = 0 var y: Int = 0 } let point: Coordinate = Coordinate() 만약 저장 프로퍼티가 옵셔널이면 해당 프로퍼티는 초기값을 넣어주지 않아도 됩니다. 지연 ..
오늘은 스위프트의 구조체에 대해서 알아보겠습니다. struct 이름 { 프로퍼티 메서드 } 위와 같은 형태로 선언할 수 있습니다. 예를 들면 고양이 구조체는 아래와 같이 선언할 수 있습니다. struct Cat { let name: String var age: Int } 구조체는 자동으로 생성된 이니셜라이저를 통해 생성할 수 있습니다. var yaong: Cat = Cat(name: "yaong", age: 5) 또는 아래와 같이 직접 이니셜라이저 메서드를 선언해줄 수 있습니다. init (nameEntred: String) { name = nameEntred age = 1 } 직접 이니셜라이저 메서드를 선언해주면 기본으로 생성된 이니셜라이저는 사용하실 수 없습니다. 위에서 인스턴스를 만들어주는 소스는 ..
- Total
- Today
- Yesterday
- Apple
- 뇌를 자극하는 C프로그래밍
- 테라스캔
- 시원스쿨
- 프로그래밍
- IOS
- Matlab
- 배열
- 매트랩
- database
- 뇌를 자극하는 C 프로그래밍
- Swift
- MySQL
- 포인터
- 단어
- 데이터베이스
- 영어
- 형용사
- C
- exercise
- 프로그램
- 애플
- 함수
- 리눅스
- terascan
- 스위프트
- 반복문
- 왕초보 영단어1
- Xcode
- 연습문제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |