La portée fait référence à la plage ou aux limites dans lesquelles une variable ou un code particulier peut être consulté et utilisé. En programmation, les variables de modèle sont utilisées pour correspondre à une structure de données spécifique et leur portée peut être limitée à certaines conditions ou instructions.
Disons que nous avons un scénario dans lequel un utilisateur peut être soit un administrateur, soit un utilisateur régulier. Nous pouvons utiliser l'opérateur instanceof pour vérifier le type de l'utilisateur, puis accéder à ses propriétés spécifiques en fonction de son rôle. Dans cet exemple, la portée de la variable pattern serait limitée au rôle spécifique de l'utilisateur :
if (user instanceof Administrator admin) { // Here we can access the properties and methods of the admin user. admin.addNewUser(); } else if (user instanceof RegularUser regUser) { // Here we can only access the properties and methods of a regular user. regUser.editProfile(); }
Dans le code ci-dessus, la portée de la variable de modèle admin est limitée à l'instruction if où la condition instanceof est vraie. Cela signifie que nous ne pouvons accéder qu'aux propriétés et méthodes de l'utilisateur administrateur dans cette instruction.
De même, la portée d'une variable de modèle peut s'étendre au-delà de l'instruction dans laquelle elle a été introduite. Disons que nous avons une fonction qui vérifie si une forme donnée est un rectangle et si elle est suffisamment grande. Dans ce cas, la portée de la variable de modèle r s'étendrait au-delà de l'instruction if dans laquelle elle a été introduite :
public static boolean bigEnoughRect(Shape s) { if (!(s instanceof Rectangle r)) { // Here the pattern variable 'r' cannot be used as the instance of Rectangle is false. return false; } // However, we can access the properties and methods of the rectangle 'r' here. return r.length() > 5; }
Les variables de modèle peuvent également être utilisées dans les expressions des instructions if. Cela nous permet d'accéder à la variable de modèle uniquement si l'instruction conditionnelle est vraie. Dans l'exemple suivant, nous utilisons la variable de motif r pour vérifier si la longueur d'un rectangle est supérieure à 5 à l'aide de l'opérateur conditionnel AND :
if (shape instanceof Rectangle r && r.length() > 5) { // Here we can use the pattern variable 'r' to access the properties of a rectangle only if the instance of Rectangle is true. System.out.println("This rectangle is big enough!"); }
Cependant, nous ne pouvons pas utiliser l'opérateur instanceof dans une instruction conditionnelle pour faire correspondre un modèle, car il vérifie un type de portée différent. Dans l'exemple suivant, le programme générera une erreur car la portée de la variable de motif r n'est pas accessible si l'instance de Rectangle est fausse :
if (shape instanceof Rectangle r || r.length() > 0) { // error // Here we cannot use the pattern variable 'r' as it may or may not exist depending on the instance of Rectangle. System.out.println("This is a rectangle with a length greater than 0"); }
En conclusion, la portée d'une variable de modèle est essentielle pour déterminer où nous pouvons y accéder et l'utiliser dans notre code. En comprenant sa portée, nous pouvons utiliser efficacement les variables de modèle pour faire correspondre les structures de données et écrire du code efficace et sans erreur.
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!