Heim  >  Artikel  >  Backend-Entwicklung  >  Zuweisungsverhalten globaler Variablen in „:="

Zuweisungsverhalten globaler Variablen in „:="

PHPz
PHPznach vorne
2024-02-09 14:50:25700Durchsuche

Zuweisungsverhalten globaler Variablen in „:=

Der PHP-Editor Xiaoxin stellt Ihnen das globale Variablenzuweisungsverhalten in „:=" vor. In früheren PHP-Versionen musste die Zuweisung zu globalen Variablen mit dem Schlüsselwort „global“ deklariert werden. Da PHP Version 7.4 jedoch die neue Syntax „:=" für die Zuweisung globaler Variablen eingeführt hat, können wir globalen Variablen Werte präziser zuweisen, wodurch der Schritt der Verwendung des Schlüsselworts „global" entfällt. Diese neue Funktion verbessert nicht nur die Lesbarkeit und Wartbarkeit des Codes, sondern reduziert auch die Menge an unnötigem Code und ermöglicht uns eine komfortablere Bedienung globaler Variablen. Schauen wir uns diese neue Funktion genauer an!

Frageninhalt

Auch wenn der Code in main 函数 作用域中使用了 :=,全局 level 仍被分配来自 getlevel() den Wert des Werts zurückgibt. Kann jemand anhand einer Sprachspezifikation erklären, wie dies ein vorhersehbares und dokumentiertes Verhalten ist? Meine Idee war, die Spezifikation besser zu lesen, aber das habe ich offensichtlich nicht getan.

Code: https://go.dev/play/p/4pz0vl-2snn

65bcfadd4058

Ausgabe:-

info <nil>
print: info

Workaround

In Ihrem Beispiel ist die neue lokale Variable für := 实际上引入了一个名为 level gemäß der Spezifikation, da sich der globale Bereich von jedem Funktionsbereich unterscheidet:

Kurze Variablendeklarationen können Variablen neu deklarieren, vorausgesetzt, sie wurden ursprünglich mit demselben Typ im selben Block (oder in der Argumentliste, wenn der Block ein Funktionskörper ist) deklariert.

Der Grund für das beschriebene Verhalten liegt darin, dass Sie nach level 的使用实际上都没有引用全局变量。 main 中的用法是从 := 中新增的局部变量,print 中的用法是函数参数。删除参数(在声明和调用站点中),您将看到 printprint: eine leere Zeichenfolge drucken.

Das obige ist der detaillierte Inhalt vonZuweisungsverhalten globaler Variablen in „:=". Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen