Skip to content

Instantly share code, notes, and snippets.

View ramunasjurgilas's full-sized avatar

Ramūnas ramunasjurgilas

View GitHub Profile
@ramunasjurgilas
ramunasjurgilas / Collect.swift
Created January 30, 2020 08:13
collect() as transforming operator
["L", "I", "E", "T", "U", "S", "!"]
.publisher.collect().sink {
print($0)
}
// Output: ["L", "I", "E", "T", "U", "S", "!"]
["L", "I", "E", "T", "U", "S", "!"]
.publisher.collect(4).sink {
print($0)
}
@ramunasjurgilas
ramunasjurgilas / Map.Swift
Last active January 30, 2020 08:29
map() as transforming operator
["1", "2", "w", "3"]
.publisher.map {
Int($0)
}
.sink {
print($0)
}
// Output:
//Optional(1)
@ramunasjurgilas
ramunasjurgilas / MapKeyPath.swift
Created January 30, 2020 08:46
map(_:) KeyPath as transforming operator
struct Person {
let firstName: String
let lastName: String
}
let publisher = PassthroughSubject<Person, Never>()
publisher
.map(\.firstName, \.lastName).sink {
print("\($0) \($1)")
@ramunasjurgilas
ramunasjurgilas / FlatMap.swift
Created January 30, 2020 10:19
flatMap() as transforming operator
struct Person {
var name: String
let age: CurrentValueSubject<Int, Never>
init(name: String, age: Int) {
self.name = name
self.age = CurrentValueSubject(age)
}
}
@ramunasjurgilas
ramunasjurgilas / ReplaceNil.swift
Created January 30, 2020 10:36
replaceNil as transforming operator
[1, nil, 3]
.publisher
.replaceNil(with: -1)
.sink { print($0) }
// Output:
// Optional(1)
// Optional(-1)
// Optional(3)
@ramunasjurgilas
ramunasjurgilas / ReplaceEmpty.swift
Created January 30, 2020 11:04
replaceEmpty as transforming operator
let empty = Empty<String, Never>()
empty
.replaceEmpty(with: "Replaced")
.sink(
receiveCompletion: { print($0) },
receiveValue: { print($0) }
)
// Output:
@ramunasjurgilas
ramunasjurgilas / Scan.swift
Created January 30, 2020 11:19
scan() as transforming operator
(1...4)
.publisher
.scan([]) { (values, value) -> [String] in
values + [String(value)]
}
.sink { print($0) }
// Output:
// ["1"]
// ["1", "2"]
@ramunasjurgilas
ramunasjurgilas / Filter.swift
Created January 30, 2020 11:30
filter() as filtering operator
"KoBrA"
.publisher
.filter { $0.isUppercase }
.sink { print($0) }
// Output:
// K
// B
// A
@ramunasjurgilas
ramunasjurgilas / RemoveDuplicates.swift
Created January 30, 2020 11:43
removeDuplicates as filtering operator
[1,1,2,1,1,3]
.publisher
.removeDuplicates()
.sink { print($0) }
// Output:
// 1
// 2
// 1
// 3
@ramunasjurgilas
ramunasjurgilas / CompactMap.swift
Created January 30, 2020 13:31
compactMap() as filtering operator
["1", "a", "3.5", "2,5"]
.publisher
.compactMap { Double($0) }
.sink { print($0) }
// Output:
// 1.0
// 3.5