Swift 13

Swift) 단일 책임의 원칙

오늘은 계산기 만들기 과제를 하다가 과제 요구사항에 단일 책임의 원칙을 지켜 코드를 작성해 보라는 것이 있어서 조금 정리를 해볼까 한다.단일 책임 원칙(SRP)이란?단일 책임 원칙은 객체 지향 설계의 SOLID 원칙 중 첫 번째 원칙이다. 이 원칙은 클래스가 하나의 책임만 가지도록 함으로써 코드의 복잡성을 줄이고, 유지보수를 쉽게 만들 수 있다.잘못된 예제부터 봅시다.class UserManager { func addUser(name: String) { // 사용자 추가 로직 } func removeUser(name: String) { // 사용자 제거 로직 } func printUserDetails(name: String) { // 사용자..

Swift 2024.06.07

Swift) inout 매개변수

제네릭을 공부하다가 예제에 매개변수에 inout 이라고 붙어 있길래 뭐지 하고 검색해보았다.생김새는 간단한거 같은데 막상 사용법을 보니 조금 헷갈리는 부분이 있어서 정리해본다. 사용법func swapValues(_ a: inout Int, _ b: inout Int) { let temporary = a a = b b = temporary}var num5 = 5var num10 = 10print("다섯: \(num5), 열: \(num10)") //다섯: 5, 열: 10swapValues(&num5, &num10) //변수를 받고 그 변수를 바로 수정해버림print("다섯: \(num5), 열: \(num10)") //다섯: 10, 열: 5메서드 매개변수 앞에 inout을 붙여주면 된다.함..

Swift 2024.06.06

Swift) Generic 제네릭

뭔가 메서드를 만들다 보면 타입에 영향을 너무 많이 받는거 같다.그러다 보면 같은 기능이지만 매개변수 타입만 달라서 메서드를 분리하는 경우가 생기는거 같다.그래서 찾아보던중 제네릭이라는 것이 있길래 조금 정리해 보려고 한다. 내가 어디서 본거 같다 했더니 전에 map함수 볼때 봤었다. 제네릭 함수제네릭은 코드의 유연성과 재사용성을 높이기 위해 사용되는 기능이다. 제네릭을 사용하면 함수, 구조체, 열거형, 클래스 등을 작성할 때 데이터 타입에 의존하지 않고, 특정 타입을 지정하지 않으면서도 다양한 타입을 다룰 수 있다.예제로 봅시다.func swapTwoValues(_ a: T, _ b: T) -> (T, T) { //넣은값 서로 교환 return (b, a)}//Int형var x: Int = 5va..

Swift 2024.06.05

Swift) 상속

자바 학원을 다닐때도 무진장 어려웠던상속오늘 기초를 조금 다져야 할거 같다. 상속이란?"스위프트(Swift)에서 상속(inheritance)은 클래스(class)가 다른 클래스의 특성과 기능을 물려받는 기능을 의미합니다. 상속을 통해 코드의 재사용성을 높이고, 기존 클래스를 확장하여 새로운 기능을 추가할 수 있습니다." 라고 한다. 기본 클래스아무것도 상속을 받지 않는 클래스를 말한다.class Human { var name: String var age: Int func printName() { print("NAME: \(name)") }}class Animal: Codable { var name: String var age: Int}Human 클래스는 아무..

Swift 2024.06.04

Swift) Struct 구조체

구조체는 데이터를 저장하고 관련 기능을 캡슐화하는 데 사용되는 사용자 정의 데이터 타입이다. 구조체는 프로퍼티와 메서드를 가질 수 있다. 말로 설명하는거 보다 예시가 직빵이다. 생김새struct Person { var name: String var age: Int func describe() { print("이름 : \(name), 나이 : \(age)") }}이렇게 구조체를 만들고 프로퍼티와 메서드를 선언해 주었다.  사용법var person1 = Person(name: "전성진", age: 30)person1.describe() // 이름 : 전성진, 나이 : 30var person2 = person1 // 복사person2.name = "김승원"person2..

Swift 2024.06.02

Swift) Protocol 프로토콜

xcode로 작업을 하다보면 자동으로 insert 되는 요소들이 생긴다.예를 들어 UITableViewDelegate 가 있다.UITableViewDelegate의 타입을 보면 protocol 이라고 되어있다. 자주 등장하는 만큼 정리를 해두는것이 좋다고 생각하여오늘 간단하게 정리해 보겠다. 프로토콜이란? 프로토콜 (protocol) 은 메서드, 프로퍼티, 그리고 특정 작업이나 기능의 부분이 적합한 다른 요구사항의 청사진을 정의합니다. 프로토콜은 요구사항의 구현을 제공하기 위해 클래스, 구조체, 또는 열거형에 의해 채택될 수 있습니다. 이라고 공식문서에 나와있다.여기서 저 '구조체, 클래스, 열거형에 의해 채택된다.' 라는 말이 이해가 안돼서 여기저기 찾아봤다.결국은 해당프로토콜을 따르겠다고 명시 하는것..

Swift 2024.06.01

Swift)고차함수 filter

저번 map 함수에 이어 filter 함수에 대해서 정리 해 볼까 한다. filter 기본형태array.filter(isIncluded: T throws -> T) filter 함수는 조건에 맞는 값들을 걸러 반환한다.조건달린 map인거 같다. filter 사용 예시let arr1: [Int] = [1, 2, 3, 4, 5]var arr2: [Int] = []for num in arr1 { if num%2 == 0 { arr2.append(num) }}print(arr2) //[2,4]for 문을 사용하여 짝수인 값만 걸러내는 코드 이것을 filter 함수를 이용하면let arr1: [Int] = [1, 2, 3, 4, 5]var arr2: [Int] = arr1.filter{ $0%2 ==..

Swift 2024.05.10

Swift) 고차함수 map

알고리즘 문제를 풀다가 다른사람들이 푼 답들을 보면 for 문 대신 map, reduce, filter 등을 쓰는것을 보았다.궁금해서 찾아 보았지만 클로저, 함수 등 기본적인 개념을 알아야 잘 쓸수 있을거 같았다. 그래서 클로저와 함수를 간단히 훑고 나서 지금에서야 글을 쓴다. map 기본 형태array.map(transform: T throws -> T) 이 코드는 Swift 언어에서 사용하는 형태의 코드로 보입니다. 이 코드는 배열(array)의 각 요소에 대해 주어진 변환(transform) 클로저를 실행하고, 그 변환 결과를 새로운 배열로 반환하는 메소드입니다. 여기서 `map` 메소드는 배열의 각 요소에 대해 변환을 적용하는 함수입니다. 이 때 `transform`은 배열의 요소를 인자로 받아 ..

Swift 2024.05.09

Swift) 클로저 Closure

오늘은 함수를 이어서 클로저를 정리 해볼까 한다. 클로저란? 보통은 익명함수를 말한다. (Unnamed Closure)하지만 평소에 쓰는 func name 이 붙은 함수도 클로저라고 한다. (Named Closure)func function() { //함수 print("Named Closure")}let closure = { print("Unnamed Closure") } //클로저 클로저 기본 형식{(파라미터) -> 리턴타입 in 실행할 코드}ex){(text: String) -> Int in return text.count}{() -> () print("안녕하세요")} Argument Label 을 사용하지 않는다.let closure = {(text: String) -> Int in retur..

Swift 2024.05.09

Swift) 함수 Function

원래는 map, filter, reduce 함수를 작성하려고 했지만 함수를 먼저 알아두면 좋을거 같아서 오늘 작성할 내용은 함수 이다. 함수, 메서드공부를 하려고 블로그 같은곳을 보다보면 함수와 메서드란 말을 볼수 있다.둘이 생긴게 똑같고 쓰는법도 똑같은거 같은데 무슨차이인지 검색해 보았다. 함수func 으로 생성한 모든것을 함수라고 한다.func function() { print("함수입니다.")} 메서드클래스, 구조체 속에 포함 되어있는 함수를 말한다.함수가 더 큰개념이다.struct example { func method() { print("메서드 입니다.") }} Argument Label과 Parameter Name함수를 만들때 파라미터 이름을 설정해 줄것이다. 이 ..

Swift 2024.05.03