2 swift 상수,변수,튜풀 옵셔널

40
스위프트의 기초 - 상수와 변수, 옵셔널 창원대학교 정보통신공학과 김대호 & 박동규 2015. 3

Transcript of 2 swift 상수,변수,튜풀 옵셔널

스위프트의 기초 - 상수와 변수, 옵셔널

창원대학교 정보통신공학과 김대호 & 박동규

2015. 3

목차

•상수와 변수(Constants & Variables)

•튜플(Tuples)

•다양한 자료형

•옵셔널(Optional)

상수와 변수

• 상수(Constant) : 값을 지정받으면 바꿀 수 없음

• 변수(Variable) : 값을 지정 받아도 언제나 바꿀 수 있음

print 함수

• println 함수를 이용하여 출력함

• C언어의 복잡한 %d, %f, %-10.3f 와 같은 출력 지정자가 필요하지 않다

• println(“숫자 num = \(num)”) 과 같이 출력함

상수와 변수

상수와 변수

상수는 초기화를 하면 변경 할 수 없다.

상수와 변수명

- 유니코드 문자를 포함하여 어떠한 문자든 사용할 수 있음

let π = 3.14159

let 你好 = "你好世界"

let 🐶🐮 = "dogcow"

상수와 변수

변수와 상수의 형(type)은 컴파일러가 추정함

타입 명시(Type Annotations)

• var num = 100과 같이 변수를 선언하면, Swift에서는 num을 Int형으로 추정함

• 상수나 변수를 만들때 어떤 형태의 값이 저장될 지 명확하게 타입을 명시할 수 있음

타입 명시(Type Annotations)

출력

• println() 메서드를 사용하여 상수와 변수의 현재 값을 출력할 수 있다

• Objective-C 의 NSLog와 비슷한 기능을 한다

출력

주석문

• C++ 언어와 같이 // 와 /* */ 주석의 두가지를 사용할 수 있다

• 프로그래밍의 실행결과에는 영향을 주지 않으나 매우 중요한 요소이다.

세미콜론

• C,C++ 언어는 문장의 끝에 ;(세미콜론)을 반드시 달아야 한다.

• 스위프트에서는 문장의 끝에 ;이 필요하지 않다. 한 줄에 여러 문장을 입력할 경우 ;을 달아준다

타입• 정수 : 34, -40과 같은 소수점 단위가 없는 숫자를 포함

• Int의 범위는 -2,147,483,648~2,147,483,647

• UInt 는 부호가 없는 양의 정수형

• 부동 소수점 수 : 3.14159, 2.718, …

• Double : 64비트 부동소수점 수를 표현

• Float : 32비트 부동소수점 수를 표현

• 1.2e2는 1.2*102를 의미함( 120.0과 동일함 )

타입• 부울형(Bool)

• true, false라는 기본적인 이진형 타입을 제공함

• 문자형(Character)

• 하나의 문자를 표현, let cow: Character = "🐮"

• 문자열(String)

• “hello cwapp.org”와 같은 문자의 컬렉션

튜플(Tuples)

• 여러 타입형 값들을 하나의 상수, 변수 값로 만듬

• 구조체와 비슷한 역할

튜플(Tuples)

튜플(Tuples)초기화 부분, Int 형 String 형이 함께 상수값에 묶여져 있다.

튜플(Tuples)

elements, 0부터 첫번째 요소를 불러온다

튜플(Tuples)

변수형 튜플로서, 요소의 값을 변화 시킬 수 있다.

튜플(Tuples)

반대로, 선언했던 부분을 순서를 가진 튜플로 재생성하여 가져 올수 있다

옵셔널(Optionals)

• 상수와 변수의 값의 유, 무를 검서할 때 사용

• 어떤 값이 다른 값과 같은지 다른지 검사하는 것이 아니라 값 자체가 있는지 없는지를 검사하는 경우가 필요함

• nil을 이용한 값의 유무 체크

옵셔널(Optionals)• Objective-c에서의 nil의 사용은 존재하지 않는 객체에

대한 포인터를 의미 - 사용의미가 다름

• 네트워크로 정보를 받아오는 프로그램을 가정하면 네트워크 사정으로 인해 정보가 전송되지 않아서 nil이 들어올 경우 심각한 문제를 일으키게 된다

• program crash가 발생함

• Swift에서의 “nil” 은 정말로 데이터가 없음이라는 것으로 명시

옵셔널

옵셔널(Optionals)

옵셔널(Optionals)

If a variable is declared as an optional, it can be nil. In fact all optionals start with a value of nil until they are set to something:

옵셔널(Optionals)

옵셔널 타입을 하면 변수의 사용(연산 처리)이 불가능하다

옵셔널 타입변수에 !를 달면 일시적으로 unwrapping이 되어서 optional 변수가 아닌척 한다

옵셔널(Optionals)

변수 옆에 느낌표를 붙여 강제 언랩핑을 시키면 옵셔널 타입도 연산이 가능하다.

옵셔널(Optionals)

toInt() 메서드는 String값을 Int 형으로 바꾸게 되는데 옵셔널 Int? 타입로 바꾼다

옵셔널(Optionals)

옵셔널 바인딩

• 옵셔널의 값이 nil 인지 아닌지 우선적으로 구분

• 옵셔널로 타입된 값을 본래 상수(혹은 변수)로 사용하도록 만들 때 사용

옵셔널 바인딩

옵셔널 체인

• 옵셔널 타입으로 선언 한 메소드나 프로퍼티를 좀 더 간단하게 가져올수 있도록 만든 기능

옵셔널 체인현재 Person Class 는 name 프로퍼티와

age 프로퍼티를 가진다

PersonRecord는 person 이라는 Person클래스 옵셔널 타입을 가진다.

옵셔널 체인person 프로퍼티에 ?를 붙여

Person() 의 name 에 액세스를 가능하도록한다

하지만 별도의 person 프로퍼티에 오브젝트를 생성하지 않았으므로 nil 값이오게된다.

옵셔널 체인

Q & A

참고자료

http://seorenn.blogspot.kr/2014/06/swift-optionals.html

http://lean-tra.github.io/Swift-Korean/

Thank you