모바일/SwiftUI ios 공부

스위프트 연산자 표현식 / Xcode SwiftUI Playground 공부

yy_dd2 2021. 9. 8. 16:36
반응형

 Xcode SwiftUI Playground  공부

 

변수와 상수를 데이터를 어떻게 사용할지 배우려면 데이터를 가지고 작업하는 기본적인 방법으로 표현식(expression)의 형태를 알아야한다.

 

스위프트 표현식 구문

스위프트 표현식 구문은 하나의 연산자(operator), 두 개의 피연산자(operand), 할당자(assignment)로 구성

// 기본 표현식 예

var myResult = 1+2

 

기본 할당 연산자

// 기본 산술식 논리식을 사용한 변수,상수에 할당하여 연산자를 사용한 예시
var x1  :   Int?     // x1 옵셔널 Int 변수 선언
var y1  =   10        // 두번째 Int y1 변수 선언
x1  =   10
print("x1 : \(x1!) , y1 : \(y1)")
x1  =   x1!  +   y1
print("x1 : \(x1!) , y1 : \(y1)")
x1  =   y1
print("x1 : \(x1!) , y1 : \(y1)")

## 책에는 print내용이 없다 결과가 없으면 유추해봐도 알 수 없고 맨 마지막에 쓰면 한번만 되니 각각 변수의 값이 바뀔 때 확인해야한다

여기서 옵셔널로 만든 x1을 래핑(?) 하지 않으면 오류가 나옴

x1  =   10

print("x1 : \(x1) , y1 : \(y1)")

x1  =   x1!  +   y1

print("x1 : \(x1) , y1 : \(y1)")

x1  =   y1

print("x1 : \(x1) , y1 : \(y1)")

위에쓴거랑 다르게 print안에 \(x1!) 느낌표를 빼면 오류남

 


스위프트 산술 연산자

이항 연산자(binary operator), 단항 음수 연산자 (unary negative operator), 뺄셈연산자 (subtraction operator)

연산자 설명
- (단항) 변수 또는 표현식의 값을 음수로 만듦
* 곱셈
/ 나눗셈
+ 덧셈
- 뺄셈
% 나머지연산

// 여러개의 연산자 사용 가능

// 여러 개의 연산자를 사용할 수도 있다
var z2 = 10
var x2 : Int?
x2 = y1 * 10 + z2 - 5 / 4
if x2 != nil {
    print(x2 as Any)
}

x2 = y1 * 10 + z2 - 5 / 4


복합 할당 연산자

변수a에 담긴 값을

변수 b에 담긴 값에 더한 결과를

변수 a 에 저장

// 복합 할당 연산자
// type을 안쓰면 알아서 지정해줌 (쓰는거 권장)
var a = 10
var b = 20
var a2 = 10
var b2 = 20

a = a + b
print(a)
// 아래 표현식과 같음
a2 += b2
print(a2)
연산자 =같은연산자 설명
a += b a = a+b a와 b 를 더한 결과 a 에 저장
a -= b a = a-b ~~뺀 결과 a 에 저장
a *= b a = a*b ~~곱한 결과 a에 저장
a /= b a = a/b a를 b로 나눈 결과 a에 저장
a %= b a = a%b a를 b로 나눈 나머지를 a에 저장

비교연산자 (이항연산자 binary operator)

대부분의 언어에서 똑같이 쓰임

연산자 설명
x == y x와 y가 같다면 true 반환
x > y x가 y보다 크다면 true 반환
x >= y x가 y보다 크거나 같으면 true 반환
x < y x가 y보다 작다면 true 반환
x <= y x가 y보다 작거나 같으면 true 반환
x != y x가 y와 같지 않다면 true 반환
// 비교 연산자 (이항 연산자)
var x3 = 10
var y3 = 10
if x3 == y3 {
    // 작업 수행 true를 반환해 작동됨
}else {
    // 작업 수행 false를 반환해 작동됨
}

var result1 : Bool?
var x4 = 10
var y4 = 20

result1 = x4 < y4
print(result1)

불리언 논리 연산자 (블린 불린 연산자 Boolean)

true 또는 false 값을 반환하는 연산자다

대표 연산자로

NOT, AND, OR 연산자가 있다

NOT 은 "!" 로 AND는 "&&"로 OR은 "||"으로 사용함

// 블린 연산자
var flag = true
var secondFlag = !flag
// false를 저장하는게 아니라 !flag로 flag에 저장된 true를 NOT으로 변경해 사용

if (10 < 20 ) || (20 < 10){
    print("Expression is true")
    // true일때
}

if (10 < 20) && (20 < 10) {
    print("Expression is true")
} else {
    print("Expression is false")
    // false 일때
}

## 책에서 새로운걸 알려줬는데

보통은 false를 그냥 변수에 저장해서 사용하거나 그랬는데

true가 저장된 flag변수에 !flag 해서 true를 false로 변경해서 쓰는 새로운 방법을 알려줬다

다른언어에서는 사용이 가능한지는 모르겠지만 헷갈리면 그냥 false를 저장해서 사용하는게 좋겠다


범위 연산자

프로그램을 반복적으로 사용할 때 매우 종요

- 닫힌 범위 연산자 (closed range operator)

ex) 5...8 의 결과는 5,6,7,8이다

x...y

 

 

- 반 개방 범위 연산자 (half-open range operator)

x부터 시작하는 모든 범위를 포함하고

y이의 범위는 포함하지 않는다

ex) 5..<8 의 결과는 5,6,7이다 (8제외)

x..<y

 

 

- 단방향 범위 연산자 (one-sided range operator)

x...
...y
// 문자열의 3번쨰부터 시작해서 마지막 문자까지
2...
// 첫 번쨰 위치의 문자부터 7번째 문자(인덱스6)까지의 범위
...6

 

삼항연산자 (Ternary operator)

조건문 ? 참(true)인 경우의 표현식 : 거짓(falser)인 경우의 표현식
// 삼항연산자
// 조건문 ? 참일때표현식 : 거짓일때표현식
let a3 = 10
let b3 = 20

// b3이 출력될것
print("Largest number is \(a3 > b3 ? a3 : b3)")

 

#php나 java에도 있다

<?php 
    $a = 30;
    echo $a > 50 ? 'true' : 'false';
 ?>
//java
// 삼항 연산자 
int A = (1 > 3) ? 10 : 50; 
// 결과 A = 50;

 


비트연산자(bit operator)

# 비트연산자를 어디에 사용할지 모르고 이 내용을 지금 당장 알아야하는지 모르겠어서 먼저 활용을 어디에 하는지 검색했다

 

출처 : https://xho95.github.io/swift/language/grammar/advanced/operator/2020/05/11/Advanced-Operators.html

비트 연산자 (bitwise operators) 는 자료 구조 안에 있는 ‘개별 원시 데이터 비트’ 를 조작하도록 해줍니다.

이들은 종종, ‘그래픽 (graphic) 프로그래밍’ 과 ‘장치 드라이버 (device driver) 생성’ 같은, 저-수준 프로그래밍에서 사용합니다. ‘비트 연산자’ 는, 사용자 정의 프로토콜을 사용한 통신에서의 ‘데이터 부호화 (encoding)’ 및 ‘복호화 (decoding)’ 같은, 외부 소스의 ‘원시 데이터’ 와 작업할 때도 유용할 수 있습니다. 스위프트는, 아래에서 설명하는 것처럼, C 에 있는 모든 ‘비트 연산자’ 를 지원합니다.

여기까지만 복사해왔다 비트연산자에는

NOT 비트 연산자, AND 비트 연산자, OR 비트 연산자, XOR 비트 연산자, 왼쪽 시프트 비트 연산자, 오른쪽 시프트 비트 연산자

그리고 복합 비트 연산자가 있다

 

비트 연산자는 필요할때 다시 확인해야겠다

책51p부터 있음

 

 

 

핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍, 닐 스미스 지음, 황반석 옮김, 제이펍 출판

반응형