<!--
{
  "availability" : [
    "Xcode: 27.0.0 -",
    "iOS: 27.0.0 -",
    "iPadOS: 27.0.0 -",
    "macCatalyst: 27.0.0 -",
    "macOS: 27.0.0 -",
    "visionOS: 27.0.0 -",
    "watchOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Evaluations",
  "identifier" : "/documentation/Evaluations/EvaluatorsBuilder",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "Evaluations"
    ],
    "preciseIdentifier" : "s:11Evaluations17EvaluatorsBuilderV"
  },
  "title" : "EvaluatorsBuilder"
}
-->

# EvaluatorsBuilder

A result builder that enables declarative evaluator lists.

```
@resultBuilder struct EvaluatorsBuilder<Sample, Subject> where Sample : SampleProtocol, Subject : EvaluationSubject
```

## Overview

Apply this builder to the `evaluators` property to remove the need for
explicit array literals and type annotations:

```swift
@EvaluatorsBuilder<ModelSample<String>, ModelSubject<String>>
func buildEvaluators() -> [any EvaluatorProtocol<ModelSample<String>, ModelSubject<String>>] {
    Evaluator<ModelSample<String>> { sample, subject in
        Metric("Match").scoring(1.0)
    }
}
```

## Topics

### Type Methods

[`static func buildExpression(any EvaluatorProtocol<Sample, Subject>) -> any EvaluatorProtocol<Sample, Subject>`](/documentation/Evaluations/EvaluatorsBuilder/buildExpression(_:))

Wraps a single evaluator expression into the builder pipeline.

[`static func buildOptional([any EvaluatorProtocol<Sample, Subject>]?) -> [any EvaluatorProtocol<Sample, Subject>]`](/documentation/Evaluations/EvaluatorsBuilder/buildOptional(_:))

Provides an empty array when an optional evaluator block is absent.

[`static func buildPartialBlock(accumulated: [any EvaluatorProtocol<Sample, Subject>], next: [any EvaluatorProtocol<Sample, Subject>]) -> [any EvaluatorProtocol<Sample, Subject>]`](/documentation/Evaluations/EvaluatorsBuilder/buildPartialBlock(accumulated:next:)-7lvjo)

[`static func buildPartialBlock(accumulated: [any EvaluatorProtocol<Sample, Subject>], next: any EvaluatorProtocol<Sample, Subject>) -> [any EvaluatorProtocol<Sample, Subject>]`](/documentation/Evaluations/EvaluatorsBuilder/buildPartialBlock(accumulated:next:)-88zf9)

[`static func buildPartialBlock(first: [any EvaluatorProtocol<Sample, Subject>]) -> [any EvaluatorProtocol<Sample, Subject>]`](/documentation/Evaluations/EvaluatorsBuilder/buildPartialBlock(first:)-3o70b)

[`static func buildPartialBlock(first: any EvaluatorProtocol<Sample, Subject>) -> [any EvaluatorProtocol<Sample, Subject>]`](/documentation/Evaluations/EvaluatorsBuilder/buildPartialBlock(first:)-875f9)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)