목록Study (34)
조앤의 기술블로그
// (expr1, expr2, ...) // Tuple Member let a = (12, 34) 튜플은 2개 이상의 값을 저장할 때 사용합니다. 서로 다른 형식의 값 저장도 가능합니다. let data = ("", 200, "ok", 12.34) data의 자료형은 (String, Int, String, Double)입니다. 튜플은 선언 이후에 - 새로운 멤버를 추가할 수 없습니다. - 기존 멤버를 삭제할 수 없습니다. - 저장된 멤버의 개수는 튜플을 선언할 때 결정되고 변경할 수 없습니다. - 튜플 멤버의 값은 변경할 수 있습니다. [멤버에 접근하는 법] 튜플은 0-based Index로, Explicit Member Expression(점문법)으로 멤버에 접근할 수 있습니다. data.o // "..
지난 포스팅에 이어서 함수에 관해 알아보겠습니다. 이번 포스팅은 Argument Label, Variadic Parameters, In-Out Parameters에 관한 내용입니다. Label은 이름이란 뜻입니다. 즉, 인자에 이름을 붙여서 함수 코드의 가독성을 높이는 것입니다. // (name: Type) // name - parameter Name, Argement Label // (label name: Type) // label - Argument Label // name - parameter Name func sayHello(to name: String) { print("Hello, \(name)") // name - 함수 body에서 사용 // to - 함수를 호출할 때 사용 } sayHello..
Swift에서 함수(Function), 파라미터, Argument Label에 대해 포스팅해보겠습니다. 함수는 특정 기능을 수행하는 코드 조각입니다. 함수를 사용하는 것의 장점은 'Reusability'입니다. 코드에서 불필요한 반복이 줄어듭니다. [Calling Functions] //functionName(parameters) print("Hello") [Defining Functions] /* func name(parameters) -> ReturnType { statements } */ func sayHello() { print("Hello World!") } sayHello() func add() -> Int { return 1 + 2 } add() 함수가 리턴한 것은 함수를 호출한 곳으로 갑니..
우선, guard문은 'Early Exit'입니다. 즉, 원하는 조건이 충족되지 않으면, 불필요한 코드는 실행하지 않고 일찍 종료해 버립니다. 기본 syntax를 보겠습니다. [Syntax] guard condition else { Statements } guard optionalBinding else { Statements } Condition을 만족하지 않는다면 else 블록 내부에 있는 Statements가 실행됩니다. condition절에는 condition이 오거나, Optional Biding이 와도 됩니다. Condition 절은 Bool 형을 return해야 합니다. else 문은 생략할 수 없습니다. [장점] if문의 경우, 조건의 수가 늘어날 수록 코드가 중첩되는데, guard문은 중첩..
구조체와 클래스에 대해 알아보겠습니다. 우선, Swift의 Programming Paradigm에 대해 알아보겠습니다. [Swift의 Programming Paradigm] 1) Object-Oriented Programming 2) Protocol-Oriented Programming 3) Functional Programming 간단하게 비교해보자면, OOP에서 Abstraction의 개념이 등장하고, 이때 Class가 주요 역할을 합니다. Class는 추상화의 결과로서, 객체 생성의 설계도 역할을 합니다. 이때 결과로 생성된 것을 instance라고 합니다. Structure는 비교적 작은 데이터를 저장하고, 값 형식이 필요할 때 사용합니다. Class와 마찬가지로 설계도 역할을 하지만, 객체는 아..
클로저란, 짧고 독립적인 코드 조각(Self-contained code blocks)을 의미합니다. (자바에서는 람다라는 개념이 있습니다. ) 이름이 없는 함수라고 이해할 수도 있습니다. 그리고 함수와 클로저는 서로 호환됩니다. 기본 syntax를 보겠습니다. //#1. { (parameters) -> Return Type in Statements } //#2. { Statements } [예제 1] let a = { print("Hello, Swift") } //a() 여기서 a()를 호출하게되면 에러가 납니다. 클로저는 글로벌 scope에서는 단독으로 사용이 불가하기 때문입니다. [예제 2] let b = { (str: String) -> String in return "Hello \(str)" } ..
https://github.com/WenchaoD/FSCalendar WenchaoD/FSCalendar A fully customizable iOS calendar library, compatible with Objective-C and Swift - WenchaoD/FSCalendar github.com iOS앱을 개발할 때 캘린더를 좀 더 쉽게 이용할 수 있도록 해주는 오픈소스이다. 내가 사용하는 캘린더앱이 이 오픈소스를 이용하고 있어서 관심을 가지게 되었다. 가장 주요한 특징 중에 하나는 제스처를 통해 week 모드로 넘어갈 수 있다는 것이다. (swipe up하면 해당 주에 걸리면서 week 모드로 변경된다. ) 이 오픈소스를 사용하기 위해서는 코코아팟 터치를 이용하면 된다. https://ze..
옵셔널 체이닝(Optional Chaining)이란, 사슬(chain)이 연결된 것처럼 옵셔널이 연달아 호출된 것을 의미합니다. 결론적으로, - 옵셔널 체이닝의 결과는 항상 옵셔널 입니다. - 옵셔널 체이닝이 포함된 표현식 중에서 하나라도 nil을 return한다면, 이어지는 표현식을 평가하지 않고 nil을 return합니다. [예제] Struct Contacts { var phone: [String: String] var address: String func printAddress() { return print(address ?? "No address") } } Struct Student { var name: String var contacts: Contacts var studentNum: Int in..