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é !
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
65bcfadd4058Sortie :-
info <nil> print: info
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
中的用法是函数参数。删除参数(在声明和调用站点中),您将看到 print
在 print:
.
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!