Maison  >  Article  >  développement back-end  >  Comportement d'affectation de variable globale dans ":="

Comportement d'affectation de variable globale dans ":="

PHPz
PHPzavant
2024-02-09 14:50:25738parcourir

Comportement daffectation de variable globale dans :=

L'éditeur PHP Xiaoxin vous présentera le comportement d'affectation des variables globales dans ":=". Dans les versions antérieures de PHP, l'affectation aux variables globales devait être déclarée à l'aide du mot-clé « global ». Cependant, depuis que PHP version 7.4 a introduit la nouvelle syntaxe ":=" pour l'affectation des variables globales, nous pouvons attribuer des valeurs aux variables globales de manière plus concise, éliminant ainsi l'étape d'utilisation du mot-clé "global". Cette nouvelle fonctionnalité améliore non seulement la lisibilité et la maintenabilité du code, mais réduit également la quantité de code inutile et nous permet d'utiliser les variables globales plus facilement. Regardons de plus près cette nouvelle fonctionnalité !

Contenu de la question

Même si le code dans main 函数 作用域中使用了 :=,全局 level 仍被分配来自 getlevel() renvoie la valeur de la valeur. Quelqu'un peut-il expliquer en quoi il s'agit d'un comportement prévisible et documenté à l'aide d'une spécification de langage. Mon idée était de mieux lire les spécifications, mais je ne l'ai évidemment pas fait.

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

65bcfadd4058

Sortie :-

info <nil>
print: info

Solution de contournement

Dans votre exemple, la nouvelle variable locale pour := 实际上引入了一个名为 level , elle est selon la spécification, car la portée globale est différente de n'importe quelle portée de fonction :

Les déclarations de variables courtes peuvent redéclarer des variables, à condition qu'elles aient été initialement déclarées avec le même type dans le même bloc (ou la même liste d'arguments, si le bloc est un corps de fonction).

La raison pour laquelle vous voyez le comportement décrit est que vous imprimez une chaîne vide après level 的使用实际上都没有引用全局变量。 main 中的用法是从 := 中新增的局部变量,print 中的用法是函数参数。删除参数(在声明和调用站点中),您将看到 printprint: .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer