# Problem Before this PR, our formatter reformats ``` squares_out = reduce(arr, 0, fn (i, squares) { return 1 }) ``` to ``` squares_out = reduce(arr, 0, (i, squares) { return 1 }) ``` i.e. it removes the `fn` keyword from the closure. This keyword is required, so, our formatter turned working code into invalid code. # Cause When this closure parameter is formatted, the ExprContext is ::Decl, so `Expr::recast` skips adding the `fn` keyword. The reason it's ::Decl is because the `squares_out = ` declaration sets it, and no subsequent call sets the context to something else. # Solution When recasting a call expression, set the context for every argument to `ExprContext::Other`.
91 KiB
91 KiB
title, excerpt, layout
title | excerpt | layout |
---|---|---|
map | Apply a function to every element of a list. | manual |
Apply a function to every element of a list.
Given a list like [a, b, c]
, and a function like f
, returns [f(a), f(b), f(c)]
map(array: [KclValue], map_fn: FunctionParam) -> [KclValue]
Arguments
Name | Type | Description | Required |
---|---|---|---|
array |
[KclValue] |
Yes | |
map_fn |
FunctionParam |
Yes |
Returns
Examples
r = 10 // radius
fn drawCircle(id) {
return startSketchOn("XY")
|> circle({ center = [id * 2 * r, 0], radius = r }, %)
}
// Call `drawCircle`, passing in each element of the array.
// The outputs from each `drawCircle` form a new array,
// which is the return value from `map`.
circles = map([1..3], drawCircle)
r = 10 // radius
// Call `map`, using an anonymous function instead of a named one.
circles = map([1..3], fn(id) {
return startSketchOn("XY")
|> circle({ center = [id * 2 * r, 0], radius = r }, %)
})