Question
Scope of variable
- MARTINELLI
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 3 ans 1 mois - il y a 3 ans 1 mois #30548
par MARTINELLI
Scope of variable a été créé par MARTINELLI
Ma question est simple : Peut-on définir au niveau d'une classe une variable globale (comme en Java par exemple), je veux dire qu'elle soit visible par toutes les méthodes.
J'ai essayé en changeant la portée par Global. ou Script.mais cela ne marche pas.
J'ai essayé en changeant la portée par Global. ou Script.mais cela ne marche pas.
Class Test
{
[string] $script:P ='Blabla'
[void] affichage()
{
write-host $P
}
}
$maClasse=[Test]::new()
$maClasse.affichage()
Dernière édition: il y a 3 ans 1 mois par MARTINELLI .
Connexion ou Créer un compte pour participer à la conversation.
- MARTINELLI
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 3 ans 1 mois #30549
par MARTINELLI
Réponse de MARTINELLI sur le sujet Scope of variable
Pas la peine de me répondre j'ai trouvé , il faut écrire :
write-host $($this.P)
c'est quand même un peu compliqué comme écriture.
write-host $($this.P)
c'est quand même un peu compliqué comme écriture.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 3 ans 1 mois #30551
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Scope of variable
Salut,
>>c'est quand même un peu compliqué comme écriture.
Non car ici $P est un membre de la classe, déclarée sous forme de variable
Et $This permet de pointer sur l'instance en cours ce qui permet au compilateur de savoir de quel P on parle :Ici la variable $S ne peut être nommée $P car il existe déjà un membre de même nom et avec Get-Variable on peut adresser la variable $P déclarée en dehors de la classe, mais c'est une approche à éviter.
>>c'est quand même un peu compliqué comme écriture.
Non car ici $P est un membre de la classe, déclarée sous forme de variable
Et $This permet de pointer sur l'instance en cours ce qui permet au compilateur de savoir de quel P on parle :
[string] $p ='Variable'
Class Test
{
[string] $p ='Propriété'
[void] Affichage()
{
$S='Interne'
write-host $this.P
Write-warning $S
Write-warning "$((Get-Variable P).value)"
}
}
$o=[Test]::new()
$o.Affichage()
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- MARTINELLI
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 3 ans 1 mois - il y a 3 ans 1 mois #30553
par MARTINELLI
Réponse de MARTINELLI sur le sujet Scope of variable
Laurent j'apprécie toujours tes remarques et ton expertise. J'avais compris ce que tu dis, mais si l'on prend d'autres langages OO, par exemple Java le problème est résolu plus simplement
Toutes les variables définies au niveau de la classe ont une visibilité globale. Si la même variable est redéfinie au niveau locale (par exemple dans une méthode), c'est elle qui prend le pas sur la variable globale. Donc les duplications de nom sont acceptées. "this" est aussi utilisée lorsqu'il y a ambiguïté.
Par exemple
Quoiqu'il en soit, comme je l'ai dit je débute avec PowerShell, et je découvre ses subtilités et ses difficultés. Par exemple quelle différence entre :
write-host $this.P
et
write-host $($this.P)
Merci encore**
Gégé
Class Test
{
String P = "blabla";
void affichage()
{
System.out.println(P);
}
}
Toutes les variables définies au niveau de la classe ont une visibilité globale. Si la même variable est redéfinie au niveau locale (par exemple dans une méthode), c'est elle qui prend le pas sur la variable globale. Donc les duplications de nom sont acceptées. "this" est aussi utilisée lorsqu'il y a ambiguïté.
Par exemple
void method()
{
String P;
P = this.P;
}
Quoiqu'il en soit, comme je l'ai dit je débute avec PowerShell, et je découvre ses subtilités et ses difficultés. Par exemple quelle différence entre :
write-host $this.P
et
write-host $($this.P)
Merci encore**
Gégé
Dernière édition: il y a 3 ans 1 mois par MARTINELLI .
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 3 ans 1 mois #30554
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Scope of variable
>>si l'on prend d'autres langages OO,
Sous PS l'orienté objet (les classes) est une adaptation, ce qui pour moi donne cette 'entre deux',
>>quelle différence entre
Ici aucune.
Il s'agit de grouper des instructions soit par () ou $(), voir ce post.
Sous PS l'orienté objet (les classes) est une adaptation, ce qui pour moi donne cette 'entre deux',
>>quelle différence entre
Ici aucune.
Il s'agit de grouper des instructions soit par () ou $(), voir ce post.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.072 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Scope of variable