我的问题就像标题一样,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/