在 ES6 世界里,spread Operator ...
用一句极简语法完成数组拼接、对象属性克隆与覆写,因此常被誉为“解包利器”。ABAP 虽然没有同名符号,但自 7.40 之后陆续引入 VALUE、CORRESPONDING、BASE、FOR 等表达式,再配合 INSERT/APPEND LINES OF 等语句,同样可以写出简洁、声明式、并具备 spread 风格的代码。本文先从 JavaScript 角度提炼 spread 的本质,随后逐段映射到 ABAP 语法,提供可完整运行的示例程序,并结合真实项目案例讨论可维护性与性能取舍。
ES6 spread Operator 的根本能力
拆解与重组
- 对数组,可把元素拆开直接注入字面量或新数组:
const m = [1, ...n, 5]
。 - 对对象,可把属性浅拷贝后按需覆写:
const x = { ...y, flag: true }
。 - 对函数形参,可把数组元素逐一展开作为参数:
sum(...nums)
。
spread 的底层逻辑只有一句话:迭代被解包对象,把元素或键值对逐个写入目标容器;后写入的同名键会覆盖先前值。这一条规律在 ABAP 内部同样适用,只是语法载体不同。