학습 기록/swift

Operators

romi__ 2024. 11. 20. 16:02

/Swift

 

오늘은 여러 가지 Operators(연산자)에 대해 공부해 보자.

 

import Foundation

let myAge = 22
let yourAge = 20

if myAge > yourAge {
	"I'm older than you."
} else if myAge < yourAge {
	"I'm younger than you."
} else {
	"Oh hey, we are the same age."
}

let myMothersAge = myAge + 30
let doubleMyAge = myAge * 2

 

부등호(<, >), 연산기호(+, -, /, *)등이 operator이다. 위에서 언급한 예시 코드에 등장하는 연산자의 경우, 두 개의 value가 있어야 작동할 수 있는 binary infix operator라고 할 수 있다.

 

Swift에는 세 가지 각기 다른 타입의 operator가 있다. unary prefix, unary postfix, binary infix가 바로 그것인데, unary의 경우 works with only one value, 즉 한 개의 value만으로 작동하는 연산자인 셈이다.

 

import Foundation

let foo = !true 
//unary prefix

let name = Optional("Vandad")
let unaryPostfix = name!
//unary postfix

 

unary prefix와 unary postfix의 예시 코드를 작성해 보았다. 

 

위의 예시 코드에서 Optional은 value가 있을 수도, 없을 수도 있게 하는 말 그대로 옵셔널이다. 바로 아래에서 name! 캐스팅을 통해 name안의 value를 강제로 꺼내준 것을 볼 수 있다. 해당 코드의 type을 확인해 보면

 

type(of: name)
//Optional<String>.Type

type(of: unaryPostfix)
//String.Type

 

name과 unaryPostfix의 type이 서로 다른 것을 볼 수 있다.

 

import Foundation

let age = 30
let message: String

if age >= 18 {
	message = "You are an adult"
} else {
	message = "You are not an adult yet"
}

 

age를 확인하여, 확인한 값에 따라 출력하는 message의 내용이 달라지도록 하는 코드는 위와 같이 짤 수 있다. 하지만 위의 코드처럼 if와 if else를 반복하는 코드 대신, tenary operator를 활용하여 다른 방법으로 동일한 기능을 하는 코드를 작성할 수도 있다.

 

let message = CONDITION
	? VALUE IF CONDITION IS MET
    : VALUE IF CONDITION IS NOT MET

 

이렇게 조건을 만족할 경우의 value, 조건을 만족하지 못할 경우의 value를 나누어서 써줄 수 있다. 위의 예시에 tenary operator를 적용해 보면 아래와 같다.

 

import Foundation

let message = age >= 18 ? "You are an adult" : "You are a kid"

 

하지만 이러한 tenary operator는 개발자들 사이에선 호불호가 많이 갈린다고 한다. 대부분의 경우 좋아하진 않는다고...(왜지) 아무튼간에 사용에 주의하는 것이 좋다고 함

 

내일은 아마 if/else문을 짚어볼 듯

'학습 기록 > swift' 카테고리의 다른 글

function  (0) 2024.11.22
if and else  (0) 2024.11.21
NSArray, NSMutableArray  (0) 2024.11.19
Hello World + Variables  (0) 2024.11.18
Xcode 설치하기  (0) 2024.11.17