Frage

Meine Frage ist, wie der Titel, Was ist der Unterschied zwischen = und ?= in ABAP Betreibern?

War es hilfreich?

Lösung

?= ist der (unten ) Gießen Operator . Es ist für Zuweisungen zwischen Referenzvariablen verwendet, deren Zuordenbarkeit wird so früh wie die Laufzeit geprüft beginnt.

C.F. allgemeine Erklärung unter wikipedia .

Beispiel:

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.

Seit 7.40, der Konstruktor Operator CAST verwendet werden können:

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.

Andere Tipps

Es ist Casting-Operator (? =) Für Zuweisungen zwischen Referenzvariablen, aber es ist nach unten Casting-Operator speziell zu sprechen.

? = Verwendet wird, um ein Super-Klasse-Objekt durch sein geerbte Klasse Objekt in Form zu beziehen

[Objektreferenz der Elternklasse]? = [Objektverweis von vererbten Klasse]

Dies ist nützlich, wenn der Typ Auflösung zur Laufzeit auftritt. Während? = Kann auch für upcasts angegeben wird, ist es in der Regel nicht erforderlich.

? = Ist verwendet, um eine Objektreferenz einer vererbten Klasse auf ein Objekt der Superklasse Typen umgewandelt, aus dem es abgeleitet ist.

? =

Typ Gießen hilft Ihnen, mehrere Objektreferenzen von Unterklassen, deren Typ aufgelöst wird zur Laufzeit nur zu verweisen. Die übergeordnete Klasse Objektreferenz, die Objekte halten kann und oft würde es eine Methode der Elternklasse sein, die verwendet werden können, um zu bestimmen, welche Unterklasse die Typumwandlung Referenzobjekt zur Laufzeit hält.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top