![[Swift] Early Return 패턴](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FP73GP%2FbtsO7qVrvV9%2FAAAAAAAAAAAAAAAAAAAAAJB-NzJGoSCd8Gjxg9oLannl_oXUlyQK3nYjKyMn-Vjl%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DkBtNZXljm8Ltn9lj4w2rfrvTgVI%253D)
Early Return 패턴. 왜 쓰고 어떻게 활용할까?코드가 복잡해질수록, 그리고 다양한 예외 상황을 다뤄야 할수록 함수 안의 if문 깊이가 점점 깊어지는 걸 경험하게 된다.이럴 때, “Early Return(얼리 리턴)” 패턴을 사용하면 코드가 훨씬 더 읽기 쉬워지고, 실수도 줄어든다. Early Return이란?함수(메서드) 내부에서 특정 조건이 만족되면, 즉시 반환(return)하여 함수 실행을 빠르게 종료하는 코딩 패턴이다.주로 잘못된 입력, 예외 상황, 필요 없는 분기에서 더 이상 실행이 필요 없을 때 사용한다. 왜 Early Return을 써야 할까?불필요한 들여쓰기(Indentation) 방지예외 상황을 초반에 처리 → 주요 로직이 눈에 잘 띄게코드의 흐름을 한눈에 파악 가능누락된 el..
![[Swift] 함수와 연산프로퍼티](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Frt7Qp%2FbtsOKIw9HBF%2FAAAAAAAAAAAAAAAAAAAAAKKNehOpQsjdcSlSUuPfwRhtI-L-Zg2ABqT8TY00mgh-%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DPSeuIfvAdDv%252FCCckX9L5n3n7rHw%253D)
함수와 연산 프로퍼티Swift를 공부하다 보면 함수(Function)와 연산 프로퍼티(Computed Property)를 자주 접하게 된다.얼핏 보면 둘 다 계산을 해서 값을 반환한다는 공통점이 있지만, 실제로는 용도와 동작 방식이 다르다. 함수(Function)함수는 어떤 동작을 수행하고 결과를 반환하는 코드 블록이다. 입력값(파라미터)을 받아서, 내부에서 연산을 처리한 뒤, 결과값을 돌려준다.함수는 호출될 때마다 실행되고, 여러 파라미터를 받을 수 있으며, 함수 이름으로 목적을 명확하게 표현할 수 있다. 예시 코드:func multiply(a: Int, b: Int) -> Int { return a * b}let result = multiply(a: 3, b: 5) // 15함수는 위처럼 호출 ..

접근제어자란코드 내의 특정 부분에 대한 접근 권한을 설정하여 코드의 캡슐화를 강화하고 보안을 유지하는데 사용된다. open가장 넓은 접근 수준, 모듈 외부에서 해당 요소에 접근하고 하위 클래싱(클래스) 및 재정의(메서드)를 허용한다.주로 프레임워크나 라이브러리르 설계할 때 외부 모듈에서 상속 및 재정의를 허용하려는 경우 사용된다.open class OpenClass { open func openMethod() {}} public모듈 외부에서 접근은 가능하지만, 하위 클래싱 및 재정의는 허용되지 않는다.주로 외부에서 접근 가능해야 하지만 내부 동작은 수정하지 못하도록 제한하고 싶은 경우 사용된다.public class PublicClass { public var publicProperty = "I ..

Enumeration(열거형)- 연관된 상수들을 하나의 이름으로 묶은 것.- 열거형에 포함된 상수들은 상수라고 하지 않고, Enumeration Case라고 부른다.- Int나 String처럼 독립적인 타입이다. = 이름을 가지고 있다.- 스코프 내에서 중복되지않는 이름을 가져야 한다.- 열거형의 case는 값이다. //Syntaxenum TypeName { case caseName case caseName, caseName}- case의 이름은 lowerCamelCase의 규칙을 따라야 하며, 중복되어서는 안된다. Associated Values (연관 값) Raw Values (원시 값)각 case마다 기본으로 설정된 원시값을 저장할 수 있다. 즉 초기값을 저장할 수 있다.타입을 지정..

Swift에서 나머지를 구해보자.나머지와 나누기를 헷갈리는 경우가 많은데,나누기 연산자는 /나머지 연산자는 % 이다. 나머지 연산자는 정수형(Int)에서만 지원하기 때문에,만약 데이터 타입이 Double이라면, truncatingRemainder를 사용해야한다. 값1.truncatingRemainder(dividingBy: 값2)let num1:Double = 10let num2:Double = 7print(num1.truncatingRemainder(dividingBy: num2))위의 문법을 보면 바로 이해할 수 있을 것이다.값1을 값2로 나눈다고 이해하면 된다. 예시를 보자.func left(num1: Double, num2: Double) -> Double { let leftResu..

TupleTuple이란?- 두개 이상의 값을 저장할 수 있는 Compound Type이다. 즉 여러 값의 묶음이라고 보면 된다.- 서로 다른 타입의 값을 저장하는 것도 가능하다.- 튜플 내의 값들은 순서대로 저장되며, 값들은 각각의 고유한 인덱스를 가진다.- 튜플에 저장되는 값의 수는 튜플을 만들때 결정되고, 그 이후에는 변경할 수 없다.- 튜플은 값 형식이기 때문에, 새로운 변수에 저장하면 기존에 있던 값이 복사된다.- 상수로 선언하면 불변, 변수로 선언하면 가변 튜플이 된다. 예시들을 보자.let GpuPrice = ("3050", 50, "3060", 60, "3070", 70)GpuPrice.0 //"3050"GpuPrice.1 //50GpuPrice.2 //"3060"소괄호 ( )와 ,로 ..

For문//Syntaxfor loopConstant in Range { statements} for문은 반복문 중 하나이다.loopConstant로 변수나 상수의 이름이 온다. (wildCaed Pattern으로 생략할 수도 있다.그리고 in 뒤의 Range에서 반복할 범위를 작성한다.그럼 statements의 코드가 위에서 정한 범위만큼 반복된다. 간단하니 예시를 바로 보자.for num in 1 ... 10 { print(num)} //num이라는 변수명. 1부터 10까지 출력for index in 0 ... 10 { print("Hello")} //index라는 변수명. 10번 반복. "Hello" 10번 출력.func testLoop() { for _ in 1 ... 10 { ..

범위 연산자(Range Operator)반복할 범위를 표현하거나, 배열에서 특정부분을 추출할 때 주로 사용된다. Closed Range Operator 첫번째 유형lowerBound ... upperBound이항연산자로 구성되어있다.시작 위치와 종료 위치가 정해져있다.1 ... 10 //오름차순. 문제없음10 ... 1 //내림차순으로 작성하는 것은 불가능하다.lowerBound는 upperBound와 반드시 작거나 같아야 한다.만약 내림차순의 범위가 필요하다면 어떻게 해야할까?(1 ... 10).reversed()이렇게 하면 내림차순의 범위가 만들어진다. 두번째 유형lowerBound...후치연산자로 구성되어있다.시작 위치는 정해져있지만, 종료 범위는 정해져있지 않다.종료 위치는 해당 연산자를 실..