[Swift] 16. 클로저(closure) 기본
2020. 11. 2. 20:36
iOS/Swift
클로저 | Closures 클로저는 실행 가능한 코드 블럭 {} 이다. 오브젝트-C 의 블럭과 다른 언어의 람다와 유사하다고 한다. 함수와 다르게 이름 정의는 필요하지 않지만, 매개변수 전달과 반환 값이 존재할 수 없다는 점이 동일하다. 함수는 이름이 있는 클로저 다. 일급 객체로 전달인자, 변수, 상수 등에 저장 및 전달이 가능하다. 참조 타입 이다. 그럼 클로저는 어떻게 사용하는가? { (매개변수 목록) -> 반환타입 in 실행 코드 } 실행 가능한 코드 블럭이라고 했기 때문에 { } 중괄호로 감싸져있다. 괄호를 이용해 파라미터를 정의하고 -> 을 이용해 반환 타입을 명시한다. "in" 키워드를 이용해 실행 코드와 분리한다. func sumFunction(a: Int, b: Int) -> Int { ..
[Swift] 15. 열거형(enum) 기본
2020. 10. 26. 17:36
iOS/Swift
스위프트에서의 열거형은 다른 언어의 열거형과 많이 다르다고 한다. 열거형은 강력한 기능을 가지고 있어 잘 알아두고 사용하면 좋다고 한다. - 유사한 종류의 여러 값을 한 곳에 모아서 정의한 것이다. 예) 요일, 월, 계절 등 - enum 자체가 하나의 데이터 타입으로, 대문자 카멜케이스를 사용하여 이름을 정의한다. - 각 case 는 소문자 카멜케이스로 정의한다. enum BootCamp { // 대문자 카멜케이스 case iosCamp // 소문자 카멜케이스 case androidCamp case webCamp } - 각 case 는 그 자체가 고유의 값입니다. (각 case에 자동으로 정수값이 할당되지 않음) - 각 case 는 한 줄에 개별로도, 한 줄에는 여러개도 정의할 수 있습니다. eum 이름..
[Swift] 14. 구조체와 클래스 비교하기
2020. 10. 20. 21:01
iOS/Swift
구조체와 클래스는 비슷한 점도 있지만 다른 점도 분명하게 있다고 생각한다. 그래서 구조체와 클래스를 비교해서 정리하기로 했다. 구조체와 클래스의 공통점 - 값을 저장하기 위한 프로퍼티를 정의한다. - 기능성을 제공하기 위한 메소드를 정의한다. // 구조체 정의 struct People { // 값을 저장하기 위한 프로퍼티 정의 var name: String = "jaynam" var age: Int = 28 var gender: String = "male" // 기능성 제공을 위한 메서드 정의 func getPeopleInfo() { print("Name : \(name) , Age : \(age) , Gender : \(gender)") } } // 클래스 정의 class Computer { // 값을..
[Swift] 12. 구조체(struct) 기본
2020. 10. 18. 20:20
iOS/Swift
1. 구조체란? 스위프트 대부분 타입은 구조체로 이루어져 있다. 구조체는 "값(value) 타입" 이다. 여기서 값 타입이란 무엇일까? 상수/변수에 할당되거나 함수에 들어갈 때 그 값이 복사되어 전달된다는 의미이다. 추가적으로, 복사되어 전달된다는 의미는 복사본을 생성한다는 것이 아니라 원본과 복사본이 메모리 공간을 공유하게 만든다는 점이다. 그래서 스위프트의 구조체는 다른 언어보다 더 기능성에 가깝다고 한다. 스위프트에서 모든 기본 타입은 값 타입이고, 구조체로써 구현된다. 그래서 대부분의 타입은 구조체로 이루어져있다고 한다. 타입 이름은 대문자 카멜케이스를 사용하여 정의한다. 2. 구조체 문법 및 사용 struct 이름 { 구현부 } 간단한 샘플을 만들어보았다. struct Sample { var m..
[Swift] 11. 옵셔널 추출 (Optional Unwrapping)
2020. 10. 8. 18:10
iOS/Swift
옵셔널 어떻게 꺼내서 활용하고 어떻게 사용할 수 있는지 공부해봤다. 옵셔널의 값을 꺼내는 방법에는 2가지 방법이 있다. 옵셔널 바인딩 | Optional Binding 옵셔널 안에 값이 있는지 확인한 후에 값을 가져오기 때문에 nil 체크를 함과 동시에 안전한 값을 추출할 수 있다. 옵셔널 바인딩은 if-let 구문을 사용해서 옵셔널의 값을 가져올 수 있다. if-let 구문 또는 if-var 구문을 통해서 옵셔널의 값이 잇는지 없는지 확인하고 가져온다는 뜻인데 예제를 통해 확인해볼 수 있다. func printName(_ name: String) { print(name) } var myName: String? = nil if let name: String = myName { printName(name)..
[Swift] 10. 옵셔널 (Optional)
2020. 9. 23. 20:25
iOS/Swift
스위프트에서의 핵심 개념이라고 하는 옵셔널에 대해서 공부해보았다. 다른 프로그래밍 언어에서는 찾아볼 수 없는 개념이기 때문에 다소 생소했다. 정확히 이해하고 다루는 데까지 시간이 좀 걸리지 않을까 생각한다. 1. Optional | 옵셔널 옵셔널, 그대로 해석해보면 '선택적인' 이라고 해석할 수 있다. 스위프트에서는 값이 '있을 수도, 없을 수도 있다' 는 것을 뜻한다. 옵셔널이 아닌 변수에 nil 값을 할당하려고 하면 아래와 같이 컴파일 오류가 발생한다. 그리고 옵셔널 타입을 사용하라고 "?"를 추가하라고 한다. 간단하게 생각해보면 옵셔널을 사용해서 값이 있는지 없는지 알 수 있다는 것이고 옵셔널이 아니라면 값이 꼭 있어야 한다는 것이다. 옵셔널이 없다면 확인해본 것과 같이 에러가 발생한다. nil 의..
[Swift] 9. 반복문 (for-in, while, repeats-while)
2020. 9. 16. 19:33
iOS/Swift
조건문 만큼이나 반복문도 많이 사용해왔다. 스위프트에서는 어떤 방법으로 반복문을 사용하는지 공부했다.1. for-in 반복문for-each 와 비슷한 구문이다. 딕셔너리의 경우 이터레이션 아이템으로 튜플이 들어온다. 기본 문법은 다음과 같다.for in { }items 에 배열을 넣으면 item 이란 변수로 반복문 내에서 사용할 수 있게 된다. item 을 통해 코드를 구현하면 된다.var integers = [1, 2, 3] for number in integers { print(number) } // ==================== 출력 결과 ==================== 1 2 3integers 라는 배열의 값을 number 라는 변수로 사용해서 출력할 수 있다.2. while 반복문w..
[Swift] 8. 조건문
2020. 9. 16. 18:26
iOS/Swift
프로그래밍을 하면서 가장 많이 썼던 것 중에 조건문과 반복문이 있다. 그 중 조건문에 대해서 기본적인 사용법에 대해서 간단하게 공부해봤다. 1. if-else 조건문 조건문 하면 프로그래밍을 공부했다면 누구나 알 수 있는 if-else 조건문이다. 기본 문법은 다음과 같다. if 조건 { 실행 코드 } else if 조건 { 실행 코드 } else { 실행 코드 } if, else if, else 모두 사용하지 않아도 된다. if 만 사용해도 되고 if 와 else if, else 를 조합해서 사용할 수 있다. 조건에는 단순 값을 넣을 수 없어 비교할 수 없기 때문에 항상 Bool 타입의 조건이 와야 한다. let someInteger = 100 if someInteger < 100 { print("10..