-
[레인스톤 iOS] 스위프트 easy하게 배워볼까? - 연산자(1)Swift 기초문법 2022. 1. 26. 09:40반응형
안녕하세요!
iOS개발자로 일하고있는 레인스톤입니다:)
뭔가 기초를 복습하기에 좋은 자료를 찾았습니다.
취업이후 들뜬 마음 + 바쁜 업무 등으로 몇 달간 학습이 부족했습니다.
반성하는 마음으로 Swift를 다시 한 번 공부해보려고 합니다!!
기본 연산자(Basic Operator)
swift에서는 산술 연산자, 논리 연산자, 범위 연산자를 지원합니다.
할당 연산자
let a = "공부" var b = "하기 싫다." b = "너무 좋다." print(a, b) // 공부 너무 좋다.
음... 뭔가 속마음이 잠깐 들킨 것 같은데... 착각이겠죠?
= 연산자를 통해 상수나 변수에 값을 할당할 수 있습니다.
let (x, y) = (0, 0) let (nx, ny) = (x+1, y-1) print(x, y) // 0 0 print(nx, ny) // 1, -1
이렇게 튜플을 활용해서 여러 값을 한 번에 할당할 수도 있습니다.
저는 코딩테스트할 때 x,y 값을 이런식으로 많이 활용하고는 합니다.
스위프트에서 할당 연산자는 값을 반환하지 않습니다.
요게 무슨 뜻이냐...? 하면
let (x, y) = (0, 0) if x = y { // 여기서 오류가 난다는 뜻입니다. print("공부 끝") }
할당 연산자가 값을 반환하지 않는 이유는 동등비교연산자(==)를 사용해야하는 곳에
할당 연산자(=)가 실수로 사용되는 것을 막기 위함이라고 합니다!
오... 역시 swift는 타이트하네요.
충격적인건 위 코드대로라면 "공부 끝"은 영원히 출력되지 않겠군요... ㅠㅠ
산술 연산자
var a = 5 var b = 2 print(a-b) // 3 빼기 연산자 print(a+b) // 7 더하기 연산자 print(a*b) // 10 곱하기 연산자 print(a/b) // 2 나누기 연산자 print(a%b) // 1 나머지 연산자
간단하죠? 더하기, 빼기, 곱하기 , 나누기 등 기본적인 사칙 연산부터 나머지 연산까지 가능합니다.
그런데 너무 간단하면 심심하니까? 심심한김에 숫자 말고 문자도 계산해볼까요?
var a = "a" var b = "b" print(a-b) // Binary operator '-' cannot be applied to two 'String' operands print(a+b) // "ab" print(a*b) // Binary operator '*' cannot be applied to two 'String' operands print(a/b) // Binary operator '/' cannot be applied to two 'String' operands print(a%b) // Binary operator '%' cannot be applied to two 'String' operands
오호... 산술 연산자 중 + 는 문자열을 합치기 위해서도 사용이 가능하군요.
합성 할당 연산자
var a = 1 a += 2 // a = a + 2와 같은 기능입니다. print(a) // 3
할당 연산과 덧셈 연산으로 구성된 연산을 합성하면 += 형태로 축약해서 사용이 가능합니다.
주의할 점은 합성 할당 연산자도 할당 연산자와 같이 값을 반환하지 않습니다.
즉, 아래와 같이 b에 원하는 값이 할당되지 않습니다.
var a = 1 let b = a+=2 print(b)// ()
비교 연산자
- 같다 (a == b)
- 같지 않다 (a != b)
- 크다 (a > b)
- 작다 (a < b)
- 크거나 같다 (a >= b)
- 작거나 같다 (a <= b)
각 비교 연산은 true 혹은 false 값을 반환합니다.
주로 if-else 구문을 같이 활용하죠?
let name = "레인스톤" if name == "레인스톤" { print("개같이 멸망") } else { print("개같이 부활") } // 개같이 멸망
또한 스위프트에서는 같은 타입 값을 가지는 튜플도 비교가 가능합니다.
튜플의 비교는 왼쪽에서 오른쪽 ( -> ) 으로 이루어지고 한 번에 한 개의 값만 비교합니다.
다른 두 값을 비교할 때까지 수행하고 다른 두 값을 비교했다면 더 이상 값을 비교하지 않습니다!
머선 말인고 하면...
print((1, "beta") < (2, "alpha")) // true print((3, "alpha") < (3, "beta")) // true print((4, "레인스톤") == (4, "레인스톤")) // true
1과 2에서 서로 다른 값을 비교 했기 때문에 beta와 alpha를 비교하지 않습니다. -> 1이 2보다 작은값으로 true
3과 3은 같은 값이기 때문에 alpha와 beta를 비교합니다. -> alpha가 beta보다 작은값으로 true
4와 4는 같은 값이기, 레인스톤과 레인스톤도 비교합니다 -> 모두 같은값으로 true
print(("blue", false) < ("purple", true)) // Binary operator '<' cannot be applied to two '(String, Bool)' operands
boolean과 같이 비교할 수 없는 값은 에러를 뱉어냅니다.
끗!
뭔가 한 개의 포스팅에 다 끝내려고 했는데 내용이 길어졌습니다... 윽
오늘은 여기까지 알아보고 다음 포스팅에서 삼항연산자부터 다시 살펴보겠습니다.
반응형'Swift 기초문법' 카테고리의 다른 글
[레인스톤 iOS] 스위프트 easy하게 배워볼까? - 콜렉션 타입(1) (0) 2022.02.12 [레인스톤 iOS] 스위프트 easy하게 배워볼까? - 문자열과 문자(3) (0) 2022.02.10 [레인스톤 iOS] 스위프트 easy하게 배워볼까? - 문자열과 문자(2) (0) 2022.02.03 [레인스톤 iOS] 스위프트 easy하게 배워볼까? - 문자열과 문자(1) (3) 2022.01.29 [레인스톤 iOS] 스위프트 easy하게 배워볼까? - 연산자(2) (0) 2022.01.27