$input.with($func)
Applies the function func to the entire input value input and returns the result of this function. Unlike map() or foreach(), which apply a function to each element of a set, with() applies the function to the complete result of the previous expression in the chain.
This makes it possible to use the result of a complex expression multiple times without having to break the chain or convert the expression into a block. The function func receives the entire result as an argument and can access it as required.
| parameter name | Type | Type Description | Mandatory | Default |
|---|---|---|---|---|
| Input | Any | The input value that is passed in full to the function. This is typically the result of the previous expression in a method chain. | yes | |
| func | Function | The function that is to be applied to the entire input value. This function receives a parameter (the input value) and can use it multiple times. | yes |
Type: Any
The result of the evaluation of the function func. The return type depends on what the func function returns.
list(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30)
.filter(x -> $x > 5)
.with(largeNumbers -> {
"count": $largeNumbers.size(),
"sum": $largeNumbers.sum(),
"average": $largeNumbers.sum() / $largeNumbers.size(),
"min": $largeNumbers.min(),
"max": $largeNumbers.max(),
"doubled": $largeNumbers.map(x -> $x * 2)
})
Output: An object with the calculated statistics: {count=9.0, sum=130.0, average=14.444444444444445, min=6.0, max=30.0, doubled=[12.0, 14.0, 16.0, 18.0, 20.0, 30.0, 40.0, 50.0, 60.0]}.
$data
.filter(item -> $item.equals("active"))
.with(activeItems ->
if($activeItems.size() > 0,
{"status": "success", "data": $activeItems},
{"status": "empty", "message": "Keine aktiven Einträge gefunden"}
)
)
Output: Depending on the result, either a success object with the active entries or a message object if no active entries were found.
$customers
.filter(c -> $c["orders"].size() > 5)
.with(topCustomers -> {
"customers": $topCustomers,
"summary": "Top-Kunden: " + $topCustomers.size() + " Kunden mit mehr als 5 Bestellungen",
"averageOrders": $topCustomers.map(c -> $c["orders"].size()).sum() / $topCustomers.size()
})
Output: An object containing both the filtered customer list and a summary and calculated average values based on these customers.