From c41766c9dc4159e06639d08651888d51998f84d7 Mon Sep 17 00:00:00 2001 From: Roy Date: Wed, 20 Aug 2025 15:40:58 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=E2=9C=A8[feat]:=20=ED=95=84=EC=88=98=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=20=EA=B3=BC=EC=A0=9C=20=EB=8F=84=EC=A0=84=20?= =?UTF-8?q?=201=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 32 +++++++++++++++++++ SpartSwiftGrammer.xcodeproj/project.pbxproj | 6 ++-- .../Sources/Clouser/SumClosure.swift | 31 ++++++++++++++++++ SpartSwiftGrammer/Sources/Main/main.swift | 28 ++++++++++++++++ 4 files changed, 95 insertions(+), 2 deletions(-) create mode 100644 SpartSwiftGrammer/Sources/Clouser/SumClosure.swift create mode 100644 SpartSwiftGrammer/Sources/Main/main.swift diff --git a/README.md b/README.md index a7588b2..b8bbc5f 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,34 @@ # SpartSwiftGrammer 내배캠 문법 주차 + +## 컨벤션 + +* [공통](./Convention/Common.md) - 모든 Swift 코드에서 준수해야 하는 컨벤션입니다. + +## 🐈‍⬛ Git + +### 1️⃣ Git branching Strategy + +- Origin(main branch) +- Origin(dev branch) +- Local(feature branch) + +- Branch +- Main +- Dev +- Feature +- Fix + +- 방법 +- 1. Pull the **Dev** branch of the Origin +- 2. Make a **Feature** branch in the Local area +- 3. Developed by **Feature** branch +- 4. Push the **Feature** from Local to Origin +- 5. Send a pull request from the origin's **Feature** to the Origin's **Dev** +- 6. In Origin **Dev**, resolve conflict and merge +- 7. Fetch and rebase Origin **Dev** from Local **Dev** + + +## Commit 가이드 + +* [Commit](./.github/.gitMessage.md) - Commit 가이드입니다 diff --git a/SpartSwiftGrammer.xcodeproj/project.pbxproj b/SpartSwiftGrammer.xcodeproj/project.pbxproj index ba8c0c4..49ae6e4 100644 --- a/SpartSwiftGrammer.xcodeproj/project.pbxproj +++ b/SpartSwiftGrammer.xcodeproj/project.pbxproj @@ -259,9 +259,10 @@ 7F01AB392E554A7500A600E3 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CODE_SIGN_ENTITLEMENTS = SpartSwiftGrammer/SpartSwiftGrammer.entitlements; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = N94CS4N6VR; - ENABLE_HARDENED_RUNTIME = YES; + ENABLE_HARDENED_RUNTIME = NO; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 6.0; }; @@ -270,9 +271,10 @@ 7F01AB3A2E554A7500A600E3 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CODE_SIGN_ENTITLEMENTS = SpartSwiftGrammer/SpartSwiftGrammer.entitlements; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = N94CS4N6VR; - ENABLE_HARDENED_RUNTIME = YES; + ENABLE_HARDENED_RUNTIME = NO; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 6.0; }; diff --git a/SpartSwiftGrammer/Sources/Clouser/SumClosure.swift b/SpartSwiftGrammer/Sources/Clouser/SumClosure.swift new file mode 100644 index 0000000..cf4d82c --- /dev/null +++ b/SpartSwiftGrammer/Sources/Clouser/SumClosure.swift @@ -0,0 +1,31 @@ +// +// SumClosure.swift +// SpartSwiftGrammer +// +// Created by Wonji Suh on 8/20/25. +// + +import Foundation +import LogMacro + +final actor SumClosure { + + static var num: Int = 3 + static var num2 : Int = 10 + + // sum 을 호출 해서 파라메터로 전달 + static var sum: (Int, Int) -> String = { a, b in + "두 수의 합은 \(a + b) 입니다" + } + + // 계산 하는 함수 클로져 방식 1 + static func calculate(_ operation : (Int, Int) -> String, a: Int, b: Int){ + #logDebug(operation(a, b)) + } + + // 계산 하는 함수 클로져 방식 2 Result 추가 + static func calculate2(_ operation: (Int, Int) -> String, a: Int, b: Int) -> Result { + let result = operation(a, b) + return .success(result) + } +} diff --git a/SpartSwiftGrammer/Sources/Main/main.swift b/SpartSwiftGrammer/Sources/Main/main.swift new file mode 100644 index 0000000..e8b303b --- /dev/null +++ b/SpartSwiftGrammer/Sources/Main/main.swift @@ -0,0 +1,28 @@ +// +// main.swift +// SpartSwiftGrammer +// +// Created by Wonji Suh on 8/20/25. +// + +import Foundation +import LogMacro + +SumClosure.calculate(SumClosure.sum, a: SumClosure.num, b: SumClosure.num2) + +switch SumClosure + .calculate2( + SumClosure.sum, + a: SumClosure.num, + b: SumClosure.num2 + ) { + case .success(let value): + #logDebug(value) + case .failure(let error): + #logError("에러 발생: \(error)") +} + + +HigherOrderFunctions.changeType(HigherOrderFunctions.numbers) + +HigherOrderFunctions.changeTypeWithMyMap(HigherOrderFunctions.numbers) From 8ad934e81ba37f9f2e10496cade4fc0a9826384e Mon Sep 17 00:00:00 2001 From: Roy Date: Wed, 20 Aug 2025 15:41:55 +0900 Subject: [PATCH 2/5] =?UTF-8?q?=E2=9C=A8[feat]:=20=ED=95=84=EC=88=98=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=20=EA=B3=BC=EC=A0=9C=20=EB=8F=84=EC=A0=84=20?= =?UTF-8?q?=202=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HigherOrderFunctions.swift | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 SpartSwiftGrammer/Sources/HigherOrderFunctions/HigherOrderFunctions.swift diff --git a/SpartSwiftGrammer/Sources/HigherOrderFunctions/HigherOrderFunctions.swift b/SpartSwiftGrammer/Sources/HigherOrderFunctions/HigherOrderFunctions.swift new file mode 100644 index 0000000..77e873a --- /dev/null +++ b/SpartSwiftGrammer/Sources/HigherOrderFunctions/HigherOrderFunctions.swift @@ -0,0 +1,39 @@ +// +// HigherOrderFunctions.swift +// SpartSwiftGrammer +// +// Created by Wonji Suh on 8/20/25. +// + +import Foundation +import LogMacro + +final actor HigherOrderFunctions { + static var numbers: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + + static func changeType(_ number: [Int] ) { + let result = number + .filter { $0 % 2 == 0} + .map { String($0)} + + #logDebug("고차 함수 테스트", result) + } + + static func changeTypeWithMyMap(_ number: [Int] ) { + let result = myMap(number) { n in + n % 2 == 0 ? String(n) : "" + }.filter { !$0.isEmpty } + #logDebug("고차 함수 테스트 with MY MAP", result ) + } + + static func myMap( + _ array: [T], + transform : (T) -> U) -> [U] { + var result = [U]() + for element in array { + result.append(transform(element)) + } + return result + } +} + From 8a84dab1af3f7542d7b92756d1c164120f5cd5cb Mon Sep 17 00:00:00 2001 From: Roy Date: Thu, 21 Aug 2025 10:30:21 +0900 Subject: [PATCH 3/5] =?UTF-8?q?=E2=9C=A8[feat]:=20=ED=95=84=EC=88=98=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=20=EA=B3=BC=EC=A0=9C=20=EB=8F=84=EC=A0=84=20?= =?UTF-8?q?=202=20=20=EB=B9=A0=EC=A7=84=20=EB=AC=B8=EC=A0=9C=20=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SpartSwiftGrammer.xcodeproj/project.pbxproj | 8 ++++++-- .../HigherOrderFunctions.swift | 11 +++++++++++ SpartSwiftGrammer/Sources/Main/main.swift | 14 +------------- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/SpartSwiftGrammer.xcodeproj/project.pbxproj b/SpartSwiftGrammer.xcodeproj/project.pbxproj index 49ae6e4..cb5e405 100644 --- a/SpartSwiftGrammer.xcodeproj/project.pbxproj +++ b/SpartSwiftGrammer.xcodeproj/project.pbxproj @@ -259,10 +259,12 @@ 7F01AB392E554A7500A600E3 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - CODE_SIGN_ENTITLEMENTS = SpartSwiftGrammer/SpartSwiftGrammer.entitlements; + CODE_SIGN_ENTITLEMENTS = ""; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = N94CS4N6VR; ENABLE_HARDENED_RUNTIME = NO; + PRODUCT_BUNDLE_IDENTIFIER = io.Roy.SpartSwiftGrammer; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 6.0; }; @@ -271,10 +273,12 @@ 7F01AB3A2E554A7500A600E3 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - CODE_SIGN_ENTITLEMENTS = SpartSwiftGrammer/SpartSwiftGrammer.entitlements; + CODE_SIGN_ENTITLEMENTS = ""; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = N94CS4N6VR; ENABLE_HARDENED_RUNTIME = NO; + PRODUCT_BUNDLE_IDENTIFIER = io.Roy.SpartSwiftGrammer; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 6.0; }; diff --git a/SpartSwiftGrammer/Sources/HigherOrderFunctions/HigherOrderFunctions.swift b/SpartSwiftGrammer/Sources/HigherOrderFunctions/HigherOrderFunctions.swift index 77e873a..d398f76 100644 --- a/SpartSwiftGrammer/Sources/HigherOrderFunctions/HigherOrderFunctions.swift +++ b/SpartSwiftGrammer/Sources/HigherOrderFunctions/HigherOrderFunctions.swift @@ -11,6 +11,17 @@ import LogMacro final actor HigherOrderFunctions { static var numbers: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + static let numbers1 = [1, 2, 3, 4, 5] + + + + static func changeForinToMap() { + let result = numbers1.map{ String($0) } + #logDebug(numbers1) + + } + + static func changeType(_ number: [Int] ) { let result = number .filter { $0 % 2 == 0} diff --git a/SpartSwiftGrammer/Sources/Main/main.swift b/SpartSwiftGrammer/Sources/Main/main.swift index e8b303b..b037143 100644 --- a/SpartSwiftGrammer/Sources/Main/main.swift +++ b/SpartSwiftGrammer/Sources/Main/main.swift @@ -8,20 +8,8 @@ import Foundation import LogMacro -SumClosure.calculate(SumClosure.sum, a: SumClosure.num, b: SumClosure.num2) - -switch SumClosure - .calculate2( - SumClosure.sum, - a: SumClosure.num, - b: SumClosure.num2 - ) { - case .success(let value): - #logDebug(value) - case .failure(let error): - #logError("에러 발생: \(error)") -} +HigherOrderFunctions.changeForinToMap() HigherOrderFunctions.changeType(HigherOrderFunctions.numbers) From 9294e914ce1391c6148190a88810a2c5a4f3b03d Mon Sep 17 00:00:00 2001 From: Roy Date: Thu, 21 Aug 2025 12:21:09 +0900 Subject: [PATCH 4/5] =?UTF-8?q?=F0=9F=AA=9B[chore]:=20=20static=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HigherOrderFunctions/HigherOrderFunctions.swift | 12 ++++++------ SpartSwiftGrammer/Sources/Main/main.swift | 8 +++++--- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/SpartSwiftGrammer/Sources/HigherOrderFunctions/HigherOrderFunctions.swift b/SpartSwiftGrammer/Sources/HigherOrderFunctions/HigherOrderFunctions.swift index d398f76..5fb3468 100644 --- a/SpartSwiftGrammer/Sources/HigherOrderFunctions/HigherOrderFunctions.swift +++ b/SpartSwiftGrammer/Sources/HigherOrderFunctions/HigherOrderFunctions.swift @@ -9,20 +9,20 @@ import Foundation import LogMacro final actor HigherOrderFunctions { - static var numbers: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + var numbers: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] - static let numbers1 = [1, 2, 3, 4, 5] + let numbers1 = [1, 2, 3, 4, 5] - static func changeForinToMap() { + func changeForinToMap() { let result = numbers1.map{ String($0) } #logDebug(numbers1) } - static func changeType(_ number: [Int] ) { + func changeType(_ number: [Int] ) { let result = number .filter { $0 % 2 == 0} .map { String($0)} @@ -30,14 +30,14 @@ final actor HigherOrderFunctions { #logDebug("고차 함수 테스트", result) } - static func changeTypeWithMyMap(_ number: [Int] ) { + func changeTypeWithMyMap(_ number: [Int] ) { let result = myMap(number) { n in n % 2 == 0 ? String(n) : "" }.filter { !$0.isEmpty } #logDebug("고차 함수 테스트 with MY MAP", result ) } - static func myMap( + func myMap( _ array: [T], transform : (T) -> U) -> [U] { var result = [U]() diff --git a/SpartSwiftGrammer/Sources/Main/main.swift b/SpartSwiftGrammer/Sources/Main/main.swift index b037143..24d425c 100644 --- a/SpartSwiftGrammer/Sources/Main/main.swift +++ b/SpartSwiftGrammer/Sources/Main/main.swift @@ -8,9 +8,11 @@ import Foundation import LogMacro +let higherOrderFunctions = HigherOrderFunctions() -HigherOrderFunctions.changeForinToMap() +await higherOrderFunctions.changeForinToMap() -HigherOrderFunctions.changeType(HigherOrderFunctions.numbers) +await higherOrderFunctions.changeType(higherOrderFunctions.numbers) + +await higherOrderFunctions.changeTypeWithMyMap(higherOrderFunctions.numbers) -HigherOrderFunctions.changeTypeWithMyMap(HigherOrderFunctions.numbers) From 396b4fa24131693699abc073c4129220f48e0917 Mon Sep 17 00:00:00 2001 From: Roy Date: Fri, 22 Aug 2025 09:00:07 +0900 Subject: [PATCH 5/5] =?UTF-8?q?=F0=9F=AA=9B[chore]:=20=20pr=20=EB=B0=98?= =?UTF-8?q?=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HigherOrderFunctions.swift | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/SpartSwiftGrammer/Sources/HigherOrderFunctions/HigherOrderFunctions.swift b/SpartSwiftGrammer/Sources/HigherOrderFunctions/HigherOrderFunctions.swift index 5fb3468..129ac82 100644 --- a/SpartSwiftGrammer/Sources/HigherOrderFunctions/HigherOrderFunctions.swift +++ b/SpartSwiftGrammer/Sources/HigherOrderFunctions/HigherOrderFunctions.swift @@ -9,20 +9,20 @@ import Foundation import LogMacro final actor HigherOrderFunctions { - var numbers: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + var numbers: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] - let numbers1 = [1, 2, 3, 4, 5] + let numbers1 = [1, 2, 3, 4, 5] - func changeForinToMap() { + func mapNumbers() { let result = numbers1.map{ String($0) } - #logDebug(numbers1) + #logDebug(result) } - func changeType(_ number: [Int] ) { + func changeType(_ number: [Int] ) { let result = number .filter { $0 % 2 == 0} .map { String($0)} @@ -30,21 +30,21 @@ final actor HigherOrderFunctions { #logDebug("고차 함수 테스트", result) } - func changeTypeWithMyMap(_ number: [Int] ) { - let result = myMap(number) { n in - n % 2 == 0 ? String(n) : "" - }.filter { !$0.isEmpty } + func changeTypeWithMyMap(_ number: [Int] ) { + let result = myMap(number) { number in + number % 2 == 0 ? String(number) : "" + }.filter { !$0.isEmpty } #logDebug("고차 함수 테스트 with MY MAP", result ) } - func myMap( + func myMap( _ array: [T], transform : (T) -> U) -> [U] { - var result = [U]() - for element in array { - result.append(transform(element)) + var result = [U]() + for element in array { + result.append(transform(element)) + } + return result } - return result - } }