abap - ABAP运算符中?=的含义是什么?

标签 abap

我的问题就像标题一样,ABAP运算符中的=?=有什么区别?

最佳答案

?=(down)casting operator。它用于在引用变量之间进行分配,这些引用变量的可分配性最早在运行时开始时进行检查。

C.f. wikipedia的一般说明。

例子:

DATA fruit TYPE REF TO zcl_fruit.
DATA apple TYPE REF TO zcl_apple. " inherits from zcl_fruit
DATA apricot TYPE REF TO zcl_apricot. " inherits from zcl_fruit

...

case fruit->type.
  when 'apple'.
    apple ?= fruit.
    seeds = apple->seeds.
  when 'apricot'.
    apricot ?= fruit.
    seeds = VALUE #( ( apricot->kernel ) ).
endcase.

从7.40开始,可以使用构造函数运算符 CAST :
DATA fruit TYPE REF TO zcl_fruit.

...

case fruit->type.
  when 'apple'.
    seeds = CAST zcl_apple( fruit )->seeds.
  when 'apricot'.
    seeds = VALUE #( ( CAST zcl_apricot( fruit )->kernel ) ).
endcase.

关于abap - ABAP运算符中?=的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1220612/

相关文章:

logging - 在客户程序中读取 SLG1 日志

for-loop - FOR 循环中不兼容的 Field-Symbol 类型

abap - ABAP中的功能模块是否允许内联数据声明

custom-controls - 输入字段有自定义控件吗?

abap - 没有循环地检查记录是否存在于itab中的方法?

abap - 读取当前 LUW 中的原始(更改前)DB 值?

abap - 导出本地表到excel的功能模块

enums - 是否可以在 ABAP 中创建枚举(枚举)?

abap - 数据在 SAP RFC 中被截断

customization - SAP R/3标准代码修改的手段?