ABAP 没有 ...,却有一套更适合强类型业务代码的展开方式

📅 2026/7/16 3:30:30
ABAP 没有 ...,却有一套更适合强类型业务代码的展开方式
我们今天讨论的场景很具体。前端代码里经常能看到这样的写法,[...oldItems, ...newItems]用来合并数组,{ ...oldOrder, status: 'A' }用来复制对象并覆盖字段,calculate(...amounts)用来把数组中的元素展开成函数实参。当这段逻辑需要迁移到 SAP 后端,尤其是迁移到 ABAP、RAP 行为实现类或者 SAP BTP ABAP Environment 时,很自然会去寻找一个同样写成...的操作符。结论可以直接落下来,ABAP 没有 JavaScript 那种统一的... spread operator。ABAP 语法里不存在一个能够同时展开内部表、展开结构字段、展开方法实参的通用操作符。不过,从完成业务需求的角度看,ABAP 并不缺少这些能力。它只是没有把三种完全不同的行为压缩到同一个符号里,而是分别交给了VALUE、BASE、LINES OF、CORRESPONDING、APPEND LINES OF、INSERT LINES OF以及动态参数绑定机制。这种差异和两门语言的数据模型有关。JavaScript 是动态语言,对象可以在运行时增加或删除属性,函数参数数量也相对自由。ABAP 是静态强类型语言,结构有哪些组件、内部表每一行是什么类型、方法包含哪些形式参数,通常在编译阶段已经确定。MDN 将 JavaScript 的