0
0
Swiftprogramming~5 mins

BuildBlock for combining results in Swift

Choose your learning style9 modes available
Introduction

BuildBlock helps you combine multiple pieces of work that can succeed or fail into one result. It makes it easy to handle many results together.

When you want to run several tasks and collect all their success or failure results.
When you need to combine multiple validation checks into one overall result.
When you want to merge several small results into a bigger result in a clear way.
Syntax
Swift
func buildBlock(_ components: Result<Void, Error>...) -> Result<Void, Error> {
    for component in components {
        if case .failure(let error) = component {
            return .failure(error)
        }
    }
    return .success(())
}

This example shows a buildBlock function that combines multiple Result values.

If any component is a failure, it returns that failure immediately.

Examples
This combines two results. Since one is failure, combined is failure.
Swift
enum MyError: Error {
    case example
}

let result1: Result<Void, Error> = .success(())
let result2: Result<Void, Error> = .failure(MyError.example)

let combined = buildBlock(result1, result2)
Both results are success, so combined is success.
Swift
let result1: Result<Void, Error> = .success(())
let result2: Result<Void, Error> = .success(())

let combined = buildBlock(result1, result2)
Sample Program

This program defines a buildBlock function to combine multiple Result values. It prints whether the combined results are success or failure.

Swift
import Foundation

enum MyError: Error {
    case example
}

func buildBlock(_ components: Result<Void, Error>...) -> Result<Void, Error> {
    for component in components {
        if case .failure(let error) = component {
            return .failure(error)
        }
    }
    return .success(())
}

let successResult: Result<Void, Error> = .success(())
let failureResult: Result<Void, Error> = .failure(MyError.example)

let combined1 = buildBlock(successResult, successResult)
let combined2 = buildBlock(successResult, failureResult)

switch combined1 {
case .success:
    print("combined1: Success")
case .failure:
    print("combined1: Failure")
}

switch combined2 {
case .success:
    print("combined2: Success")
case .failure:
    print("combined2: Failure")
}
OutputSuccess
Important Notes

BuildBlock is useful in SwiftUI and result builders to combine multiple parts.

Here, it stops at the first failure to avoid unnecessary work.

Summary

BuildBlock combines multiple Result values into one.

It returns failure if any component fails, otherwise success.

This helps manage multiple results cleanly and clearly.