<프로그래밍 언어에서 가장 많이 사용하는 연산자>

  1. 대입 연산자 (=): 변수에 값을 할당하는 데 사용됩니다.
  2. 산술 연산자 (+, -, *, /, %): 기본적인 수학 연산을 수행합니다.
  3. 비교 연산자 (==, !=, <, >, <=, >=): 값들을 비교하여 불리언 결과를 반환합니다.
  4. 논리 연산자 (&&, ||, !): 논리적인 계산을 수행합니다.
  5. 증감 연산자 (++, --): 변수의 값을 증가시키거나 감소시킵니다.

 

<증가 연산자와 감소 연산자>

Swift에서는 ++와 -- 연산자가 없음.

  • 증가: 변수 += 1
  • 감소: 변수 -= 1

<비교 연산자>

== (값 비교):

  • 두 값이 동일한지를 비교합니다.

=== (참조 비교):

  • 두 클래스 인스턴스가 동일한 객체를 참조하는지를 비교합니다.
  • 값이 아닌 메모리 주소를 비교합니다.

 

범위연산자

 

시험(중요)

 

 

클래스로 부터 객체를 만드는 소스 예시

C++

#include <iostream>
using namespace std;

class Person {
public:
    string name;
    int age;

    Person(string n, int a) : name(n), age(a) {}
};

int main() {
    Person person("홍길동", 30);
    cout << person.name << "의 나이는 " << person.age << "세입니다." << endl;
    return 0;
}

Java

class Person {
    String name;
    int age;

    Person(String n, int a) {
        name = n;
        age = a;
    }
}

public class Main {
    public static void main(String[] args) {
        Person person = new Person("홍길동", 30);
        System.out.println(person.name + "의 나이는 " + person.age + "세입니다.");
    }
}

Python

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person = Person("홍길동", 30)
print(f"{person.name}의 나이는 {person.age}세입니다.")

JavaScript

class Person {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }
}

const person = new Person('홍길동', 30);
console.log(`${person.name}의 나이는 ${person.age}세입니다.`);

 

 

xcode 정렬: ctrl+i

 

1~9출력

for i in 0..<10 {
print(i)
}
for i in 0...9 {
print(i)
}

 

 

이름 9번 출력

for _ in 0...9 {//= 0; i < 10; i+=1 {
print("kdh")
}

 

// 0부터 9까지 반복
for i in 0...9 {
    // i에 1을 더한 값을 출력하고 "kdh"라는 문자열을 붙임
    print("\(i + 1): kdh")
}

 

xcode 주석: commend +/

 

<배열의 항목 접근>

// 문자열 배열을 정의
let names = ["A", "B", "C", "D"]

// 배열의 인덱스 1부터 끝까지 반복
for name in names[1...] {
    // 현재 이름을 출력
    print(name)
}

 

 

<if문>

// 변수 x를 10으로 초기화
var x = 10

// x가 5보다 큰지 확인
if x > 5 {
    // 조건이 참일 경우 메시지를 출력
    print("5보다 큽니다")
}

 

 

 

 

swift제어문 예시

1. 조건문

 

if 

let number = 10

if number > 5 {
    print("5보다 큽니다") // 조건이 참일 때 실행
}

 

if-else 

let number = 3

if number > 5 {
    print("5보다 큽니다")
} else {
    print("5보다 작거나 같습니다") // 조건이 거짓일 때 실행
}

 

switch 

let fruit = "사과"

switch fruit {
case "바나나":
    print("바나나입니다.")
case "사과":
    print("사과입니다.") // 해당하는 케이스 실행
default:
    print("다른 과일입니다.")
}

 

2. 반복문

for 

for i in 1...5 { // 1부터 5까지 반복
    print(i) // 1, 2, 3, 4, 5 출력
}

while 

var count = 0

while count < 3 {
    print("Count는 \(count)") // Count는 0, 1, 2 출력
    count += 1
}

repeat-while 

var count = 0

repeat {
    print("Count는 \(count)") // Count는 0, 1, 2 출력
    count += 1
} while count < 3

3. 제어 흐름 변경

break 

for i in 1...5 {
    if i == 3 {
        break // i가 3이면 반복문 종료
    }
    print(i) // 1, 2 출력
}

continue 

for i in 1...5 {
    if i == 3 {
        continue // i가 3이면 다음 반복으로 넘어감
    }
    print(i) // 1, 2, 4, 5 출력
}

 

 

optional 

(implicitly unwrapped)

var x : Int = 10
print(x)//10
var y : Int? = 20 //optional 변수 (자료형 뒤에 ?)
print(y!)//20 //optional 변수의 값을 저장할 경우 변수 뒤에 !해야됨/ 안하면 => 출력값: Optional(20)

 

nil(값이 없다)

var y : Int? // 초기값 없앰
print(y)//nil(값이 없다)

 

 

// 변수 x를 Int 타입으로 선언하고 10으로 초기화
var x: Int = 10
print(x) // x의 값을 출력: 10

// 변수 y를 Int? (옵셔널) 타입으로 선언하고 20으로 초기화
var y: Int? = 20

// y의 값을 강제로 언래핑하여 1을 더한 후 다시 y에 할당
y = y! + 1 // y의 값이 nil이 아닐 때만 안전하게 언래핑 가능
print(y) // y의 값을 출력: 21

 

 

 

<optional binding(여러 옵셔널 값 동시에 언래핑)>

var x : Int?
//x = 10
if x != nil {
print(x!)
}
else {
    print("nil")//nil
}

var x : Int?
x = 10
if let x {
    print(x)//10
}

 

var x : Int? = 10
var y : Int! = 20
var z : Int = 1
print(x,y,z)
z = x!
print(z)
z = y!
print(z)
if let x, let y {
    print(x,y)
}

 

사용자가 사용하는 것 같지 않으면 자동으로 풀어버림

var x : Int? = 10
var y : Int! = 20
var z : Int = 1
print(x,y,z)
z = x! + 1
print(z)
z = y + 1
print(z)
if let x, let y {
    print(x,y)
}

var x : Int? //= 10
var y : Int = 0
y = x ?? 1
print(x,y)//nil 1

swift에서 optional 푸는 방법을 많이 사용하는 순서

1. 강제 언래핑 (Force Unwrapping)

! 연산자를 사용하여 옵셔널 값을 강제로 언래핑합니다. 주의: 값이 nil일 경우 런타임 오류가 발생합니다

let optionalValue: Int? = 10
let value = optionalValue! // 강제 언래핑

2. 옵셔널 바인딩 (Optional Binding)

if let 또는 guard let을 사용하여 옵셔널 값을 안전하게 언래핑합니다. 값이 nil이 아닐 경우에만 실행됩니다.

if let unwrappedValue = optionalValue {
    print(unwrappedValue) // 값이 있을 경우 실행
}
------
guard let unwrappedValue = optionalValue else {
    return // 값이 nil일 경우 함수 종료
}
print(unwrappedValue)

3. nil 병합 연산자 (Nil Coalescing Operator)

?? 연산자를 사용하여 옵셔널 값이 nil일 경우 기본 값을 제공합니다.

let value = optionalValue ?? 0 // optionalValue가 nil이면 0을 사용

4. 옵셔널 체이닝 (Optional Chaining)

옵셔널 값의 속성이나 메소드를 호출할 때 사용합니다. 값이 nil이면 호출이 무시됩니다.

 

let length = optionalValue?.description.count // nil이면 length도 nil이 됨

5. 옵셔널 배열 (Optional Array)

배열의 요소로 옵셔널을 사용하고, compactMap을 이용하여 nil이 아닌 값만 필터링할 수 있습니다.

let optionalArray: [Int?] = [1, nil, 2, nil, 3]
let values = optionalArray.compactMap { $0 } // [1, 2, 3]

 

출처: 한성현 교수님 수업자료

'Swift' 카테고리의 다른 글

iOS 프로그래밍 기초 7주차  (0) 2024.10.16
iOS 프로그래밍 기초 6주  (0) 2024.10.15
iOS프로그래밍 기초 5주차  (0) 2024.10.03
iOS프로그래밍 기초 2주차  (0) 2024.09.11
<1주차>iOS 프로그래밍 기초  (2) 2024.09.04

+ Recent posts