728x90
반응형

저번 포스팅에서 다뤘던 스위프트의 속성을 사용해서 다양한 연산자(Operator)를 처리하는 방법에 대해 설명하고자 합니다.


연산자를 사용하면 값을 합치고, 변경하고, 검사 할 수 있습니다.

예를 들면 1 + 2처럼 +라는 연산자를 사용할 수 있고 &&를 사용해 Bool 값을 연산할 수 있습니다.


연산자는 단항, 이항, 삼항으로 분류 할 수 있습니다.


단항은 single target(-a), prefix operator(!b), postfix operator(c!)와 같은 것이 있습니다.

이항은 two targets(2 + 3)와 같은 것이 있습니다.

삼항은 three targets(a ? b : c)와 같은 것이 있습니다.


연산자에 영향을 주는 Value를 operand라고 부릅니다.

1 + 2에서 +는 binary operator이며 1과 2는 operand라고 말할 수 있습니다.



Assignment Operator

할당 연산자는 값을 초기화하거나 갱신하는 역할을 합니다.


let b = 10

var a = 5

a = b

// a is now equal to 10



Arithmetic Operators

스위프트는 4개의 Arithmetic Operator를 제공합니다.

- Addition +

- Subtraction -

- Multiplication *

- Division /


1 + 2       // equals 3

5 - 3       // equals 2

2 * 3       // equals 6

10.0 / 2.5  // equals 4.0


그리고 Addition Operator는 String를 합칠때 사용 할 수 있습니다.


var helloworld = "hello, " + "world"  // equals "hello, world"



Remainder Operator

나머지 연산자는 %를 사용하고 left value를 right value로 나누고 남은 나머지를 반환합니다.


9 % 4       // equals 1



Compound Assignment Operator

합성 할당 연산자는 Assignment와 이항연산자를 합친 연산자입니다.


var a = 1

a += 2

// a is now equal to 3


a += 2는 실제로 a = a + 2로 볼 수 있습니다.



Comparison Operators

비교 연산자는 6개가 있습니다.

- Equal to ==

- Not equal to !=

- Greater than >

- Less than <

- Greater than or equal to >=

- Less than or equal to <=


1 == 1   // true because 1 is equal to 1

2 != 1   // true because 2 is not equal to 1

2 > 1    // true because 2 is greater than 1

1 < 2    // true because 1 is less than 2

1 >= 1   // true because 1 is greater than or equal to 1

2 <= 1   // false because 2 is not less than or equal to 1



Ternary Conditional Operator

삼항 연산자는 if..else와 비슷합니다.

form은 question ? answer1 : answer2 의 형태입니다.

question이 true이면 answer1을, false이면 answer2를 반환합니다.


let contentHeight = 40

let hasHeader = true

let rowHeight = contentHeight + (hasHeader ? 50 : 20)

// rowHeight is equal to 90



Nil-Coalescing Operator

nil 결합 연산자는 Optional value가 값을 가지고 있는지 확인해서 값을 리턴하는 연산자 입니다.


a ?? b

a가 nil이 아니면 a를, nil이면 b를 반환합니다.

이 코드는 아래와 같이 나타낼 수 있습니다.


a != nil ? a! : b



Range Operators

범위 연산자는 3가지 종류가 있습니다.

- Closed Range Operator a...b

- Half-Open Range Operator a..<b

- One-Sided Ranges Operator a... / ...b



Logical Operators

논리 연산자는 operand가 Boolean인 것들의 Operator입니다.

- Logical Not !a

- Logical And a && b

- Logical OR a || b



728x90
반응형

'Language > Swift' 카테고리의 다른 글

(Swift) 스위프트 속성(Property)기초  (0) 2017.10.08
(Swift) 스위프트 맛보기  (0) 2017.10.07
728x90
반응형

스위프트는 정수형 타입인 Int와 실수형 타입인 Double, Float와 참과 거짓을 나타내는 Bool과 문자열을 나타내는 String의 데이터 타입이 있고 Collection 타입인 Array, Set, Dictionary도 제공합니다. 또한 Objective-C에서 제공하던 Tuple도 제공합니다. 그리고 새로 추가된 Optional을 제공합니다. Optional타입은 nil값을 저장 할 수 있습니다.


스위프트에서 데이터는 상수 또는 변수로 나타낼 수 있습니다. 상수는 let 키워드를 사용하고 변수는 var 키워드를 사용합니다.


let maximumNumberOfLoginAttempts = 10

var currentLoginAttempt = 0


이 코드는 아래와 같이 해석 할 수 있습니다.

maximumNumberOfLoginAttempts 상수를 선언 했고 10으로 초기화 했다.

currentLoginAttempt 변수를 선언 했고 0으로 초기화 했다.


그리고 한 줄에 여러개의 변수를 선언함과 동시에 초기화도 같이 할 수 있습니다.


var x = 0.0, y = 0.0, z = 0.0


만약에 우리가 변수를 선언하고 값을 초기화 하지 않으면 어떤 일이 발생할까요?


var x

이렇게 type annotation이 빠졌다고 에러를 보여주게 됩니다.


그럼 Type Annotation이란 무엇일까요?

Type Annotation은 변수나 상수의 이름 뒤에 "이것이 어떤 타입이다"라고 명시적으로 알려주는 것입니다.


var welcomeMessage: String

바로 이렇게 말이죠.


여기서 :은 of type라는 의미를 가지고 있습니다. welcomeMessage는 String type의 var라는 거죠.


Integer(정수)는 소수점이 없는 숫자를 나타낼 수 있습니다.

기본적으로 Int는 32비트 플랫폼에서는 Int32처럼 동작하고 64비트 플랫폼에서는 Int64처럼 동작합니다.

UInt는 unsigned int로 0이상의 자연수를 나타낼 수 있습니다. 다른말로 음수값은 가질 수 없는 거죠.

UInt도 Int와 마찬가지로 32비트, 64비트 플랫폼에 따라 UInt32, UInt64로 동작합니다.


실수는 Double과 Float로 나타낼 수 있습니다.

Double은 64비트 범위를 나타낼 수 있고 Float는 32비트 범위를 나타낼 수 있습니다.



정수는 Literal을 이용하면 2진수, 8진수, 16진수로 나타낼 수 있습니다.


let decimalInteger = 17

let binaryInteger = 0b10001       // 17 in binary notation

let octalInteger = 0o21           // 17 in octal notation

let hexadecimalInteger = 0x11     // 17 in hexadecimal notation


실수도 Literal을 이용해서 만들 수 있습니다.


let literalDecimal1 = 1.25e2    // 125

let literalDecimal2 = 1.25e-2   // 0.0125

let literalDecimal3 = 0xfp0     // 15

let literalDecimal4 = 0xfp2     // 60

let literalDecimal5 = 0xfp-2    // 3.75


e는 10^이고 p는 2^ 입니다.

1번은 1.25 * 10^2

2번은 1.25 * 10^-2

3번은 15 * 2^0

4번은 15 * 2^2

5번은 15 * 2^-2


튜플은 여러개의 값을 그룹화 시킬 수 있습니다.

예를 들어서 HTTP status code인 404는 "Not Found" 입니다.

이것은 (404, "Not Found")라고 튜플형태로 만들 수 있습니다.


let http404Error = (404, "Not Found")


이것을 사용하기 위해서는

1.

let (statusCode, statusMessage) = http404Error

print("The status code is \(statusCode)")

// Prints "The status code is 404"

print("The status message is \(statusMessage)")

// Prints "The status message is Not Found


2.

let (justTheStatusCode, _) = http404Error

print("The status code is \(justTheStatusCode)")

// Prints "The status code is 404


3. 

print("The status code is \(http404Error.0)")

// Prints "The status code is 404"

print("The status message is \(http404Error.1)")

// Prints "The status message is Not Found


4.

let http200Status = (statusCode: 200, description: "OK")

print("The status code is \(http200Status.statusCode)")

// Prints "The status code is 200"

print("The status message is \(http200Status.description)")

// Prints "The status message is OK


이런식으로 사용 할 수 있습니다.


튜플을 사용하게 되면 함수에서 여러개의 값을 한번에 리턴 시킬 수 있습니다.


Optional은 C나 Objective-C에서는 없던 개념입니다.

이것은 값의 부재를 나타냅니다. 다른 말로 값이 있던지, 값이 없던지 입니다.

값이 있는 것은 정수형에서는 0이나 19로 나타내는 것이고 값이 없다는 것은 nil로 값을 설정해주는 것입니다.


var serverResponseCode: Int? = 404

// serverResponseCode contains an actual Int value of 404

serverResponseCode = nil

// serverResponseCode now contains no value


Optional은 타입뒤에 ?를 붙여줍니다.

serverResponseCode는 Optional Int타입이며 404 값으로 초기화 되었습니다.

그 다음에 nil로 값을 비워줬습니다.


nil은 Optional 타입이 아닌 변수에 설정 할 수 없습니다.

Optional 타입의 변수에 값을 초기화 해주지 않으면 스위프트는 자동으로 nil값으로 초기화 해줍니다.


728x90
반응형

'Language > Swift' 카테고리의 다른 글

(Swift) 스위프트 연산자(Operator) 기초  (0) 2017.10.09
(Swift) 스위프트 맛보기  (0) 2017.10.07
728x90
반응형

예전에 Objective-C언어를 사용해서 iOS, MacOS위에서 동작하는 앱을 개발했습니다.


그리고 2014년 6월 2일 WWDC를 통해 스위프트가 소개되었고 그 이후로 스위프트를 통해 많은 앱들이 개발 되었습니다.


스위프트를 사용해 개발하기 위해서는 MacOS기반 개발환경이 필요하고 XCode가 설치되어있어야 합니다.


그리고 playground에서 스위프트를 사용해서 코드를 작성하면 결과를 즉시 확인 할 수 있습니다.



이렇게 말이죠.


앞으로의 포스팅에서는 스위프트언어에 대해서 알아보고 아이폰 개발에 대해 알아보겠습니다.


제가 참고하는 자료는 The Swift Programming Language (Swift 4) 입니다.


728x90
반응형

'Language > Swift' 카테고리의 다른 글

(Swift) 스위프트 연산자(Operator) 기초  (0) 2017.10.09
(Swift) 스위프트 속성(Property)기초  (0) 2017.10.08

+ Recent posts