Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extension Sequence {
- public func filterMap<T>(map: (Self.Iterator.Element) throws -> (Bool, T)) rethrows -> [T] {
- var array : [T] = []
- for element in self {
- do {
- let (result, value) = try map(element)
- if result {
- array.append(value)
- }
- }
- }
- return array
- }
- public func filterMap<T>(includeElement: (Self.Iterator.Element) throws -> Bool, map: (Self.Iterator.Element) throws -> T) rethrows -> [T] {
- var array : [T] = []
- for element in self {
- do {
- if try includeElement(element) {
- array.append(try map(element))
- }
- }
- }
- return array
- }
- }
- print((0...10).filterMap { return ($0 % 2 == 0, $0 * 2) })
- // prints [0, 4, 8, 12, 16, 20]
- print(
- (0...10).filterMap(
- includeElement: { return $0 % 2 == 0 },
- map: { return $0 * 4 }
- )
- )
- // prints [0, 8, 16, 24, 32, 40]
- print([nil, 1, 4, nil, 6].filterMap(includeElement: { $0 != nil }, map: { $0! + 1 }))
- // prints [2, 5, 7]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement