Skip to content

Instantly share code, notes, and snippets.

View ramunasjurgilas's full-sized avatar

Ramūnas ramunasjurgilas

View GitHub Profile
@ramunasjurgilas
ramunasjurgilas / Last.swift
Created February 27, 2020 06:57
Combine: last() as filtering operator
["a1", "b2", "c3", "b4", "a5"]
.publisher
.last(where: { $0.hasPrefix("b") })
.sink { print($0) }
// Output:
// b4
@ramunasjurgilas
ramunasjurgilas / First.swift
Created February 27, 2020 06:46
first() as filtering operator
["a", "b", "c", "a"]
.publisher
.first(where: { $0 == "a" })
.sink { print($0) }
// Output:
// a
@ramunasjurgilas
ramunasjurgilas / IgnoreOutput.swift
Last active February 27, 2020 06:30
ignoreOutput() as filtering operator
(1...2000)
.publisher
.ignoreOutput()
.sink(receiveCompletion: { print($0) }, receiveValue: { print($0) })
// Output:
finished
// Without ignoreOutput
(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
@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 / 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 / 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 / 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 / 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 / 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)
}
}