ArrayExpression.swift 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // Copyright 2025 Google LLC
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. /// An expression that represents an array of values.
  15. ///
  16. /// `ArrayExpression` is used to construct an array from a list of `Sendable`
  17. /// values, which can include literals (like numbers and strings) as well as other
  18. /// `Expression` instances. This allows for the creation of dynamic arrays within
  19. /// a pipeline.
  20. ///
  21. /// Example:
  22. /// ```swift
  23. /// ArrayExpression([
  24. /// 1,
  25. /// 2,
  26. /// Field("genre"),
  27. /// Field("rating").multiply(10),
  28. /// ArrayExpression([Field("title")]),
  29. /// MapExpression(["published": Field("published")]),
  30. /// ]).as("metadataArray")
  31. /// ```
  32. public class ArrayExpression: FunctionExpression, @unchecked Sendable {
  33. var result: [Expression] = []
  34. public init(_ elements: [Sendable]) {
  35. for element in elements {
  36. result.append(Helper.sendableToExpr(element))
  37. }
  38. super.init("array", result)
  39. }
  40. }