Skip to content

Commit f3cb330

Browse files
committed
feat: Introduce also, apply, applied extensions for Swift/iosApp
* Added iosAppShared folder for iosApp shared source codes. Bug: tkuitocc#89 Change-Id: If5656816a1651437eeb091fe857ab3a568fc31bd
1 parent d1afefc commit f3cb330

2 files changed

Lines changed: 44 additions & 0 deletions

File tree

iosApp/iosApp.xcodeproj/project.pbxproj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@
5252
path = Configuration;
5353
sourceTree = "<group>";
5454
};
55+
7555FF7A292A565900829871 /* iosAppShared */ = {
56+
isa = PBXFileSystemSynchronizedRootGroup;
57+
path = iosAppShared;
58+
sourceTree = "<group>";
59+
};
5560
7555FF7D242A565900829871 /* iosApp */ = {
5661
isa = PBXFileSystemSynchronizedRootGroup;
5762
exceptions = (
@@ -105,6 +110,7 @@
105110
isa = PBXGroup;
106111
children = (
107112
7555FF7929225F7C00F7AF9C /* Configuration */,
113+
7555FF7A292A565900829871 /* iosAppShared */,
108114
7555FF7D242A565900829871 /* iosApp */,
109115
7555FFBE2E9CA65C0046E640 /* iosAppTests */,
110116
7555FFC82E9CA65C0046E640 /* iosAppUITests */,
@@ -147,6 +153,7 @@
147153
dependencies = (
148154
);
149155
fileSystemSynchronizedGroups = (
156+
7555FF7A292A565900829871 /* iosAppShared */,
150157
7555FF7D242A565900829871 /* iosApp */,
151158
);
152159
name = iosApp;
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
public protocol Alsoable {}
2+
3+
extension Alsoable {
4+
@discardableResult
5+
@inline(__always)
6+
public func also(_ block: (Self) throws -> Void) rethrows -> Self {
7+
try block(self)
8+
9+
return self
10+
}
11+
}
12+
13+
protocol ApplyableReference: AnyObject {}
14+
15+
extension ApplyableReference {
16+
@discardableResult
17+
@inline(__always)
18+
public func apply(_ block: (Self) throws -> Void) rethrows -> Self {
19+
try block(self)
20+
21+
return self
22+
}
23+
}
24+
25+
public protocol ApplyableValue {}
26+
27+
extension ApplyableValue {
28+
@discardableResult
29+
@inline(__always)
30+
public func applied(_ block: (inout Self) throws -> Void) rethrows -> Self {
31+
var copy: Self = self
32+
33+
try block(&copy)
34+
35+
return copy
36+
}
37+
}

0 commit comments

Comments
 (0)