.

Précédent Table des matières Suivant
Comprendre les variables Ruby Classes de nombres et conversions Ruby

Achetez et téléchargez les éditions complètes PDF et ePub de cet eBook Ruby pour seulement 8 $.99

Maintenant que nous avons couvert les bases des variables en Ruby, la prochaine tâche est d’expliquer la portée des variables Ruby.

Contenu

Qu’est-ce que la portée des variables ?

La portée définit où dans un programme une variable est accessible. Ruby dispose de quatre types de portée des variables, local, global, instance et classe. En outre, Ruby possède un type de constante. Chaque type de variable est déclaré en utilisant un caractère spécial au début du nom de la variable comme indiqué dans le tableau suivant.

.

Nom commence par Portée de la variable
$ Une variable globale
@ Une variable d’instance
ou _ Une variable locale
Une constante
@@ Une variable de classe

En outre, Ruby possède deux pseudo-variables auxquelles on ne peut pas attribuer de valeurs. Il s’agit de nil qui est affectée aux variables non initialisées et de self qui fait référence à l’objet en cours d’exécution. Dans le reste de ce chapitre, nous examinerons tour à tour chacune de ces portées de variables.

Ezoicreport this ad

Détecter la portée d’une variable Ruby

Evidemment, vous pouvez connaître la portée d’une variable en regardant son nom. Parfois, cependant, vous avez besoin de découvrir la portée de manière programmatique. Une technique utile pour connaître la portée d’une variable est d’utiliser la méthode defined ? defined ? retournera la portée de la variable référencée, ou nil si la variable n’est pas définie dans le contexte actuel:

x = 10=> 10defined? x=> "local-variable"$x = 10=> 10defined? $x=> "global-variable"

Variables locales Ruby

Les variables locales sont locales à la construction de code dans laquelle elles sont déclarées. Par exemple, une variable locale déclarée dans une méthode ou dans une boucle ne peut pas être accédée en dehors de cette boucle ou méthode. Les noms des variables locales doivent commencer soit par un trait de soulignement, soit par une lettre minuscule. Par exemple :

loopcounter = 10_LoopCounter = 20

Variables globales Ruby

Les variables globales en Ruby sont accessibles de n’importe où dans le programme Ruby, indépendamment de l’endroit où elles sont déclarées. Les noms des variables globales sont préfixés par le signe dollar ($). Par exemple :

$welcome = "Welcome to Ruby Essentials"

L’utilisation de variables globales est fortement déconseillée. Le problème avec les variables globales est que, non seulement elles sont visibles partout dans le code d’un programme, mais elles peuvent également être modifiées de n’importe où dans l’application. Cela peut rendre le suivi des bogues difficile.

Il est cependant utile de savoir qu’un certain nombre de variables globales prédéfinies sont à votre disposition en tant que développeur Ruby pour obtenir des informations sur l’environnement Ruby. Un bref résumé de chacune de ces variables est contenu dans le tableau suivant.

.

Nom de la variable Valeur de la variable
L’emplacement de la dernière erreur
$_ La dernière chaîne lue par gets
$. Le numéro de la dernière ligne lue par l’interpréteur
$& La dernière chaîne trouvée par l’expression rationnelle
$~ La dernière correspondance de l’expression rationnelle, sous la forme d’un tableau de sous-expressions
$n La nième sous-expression de la dernière correspondance (identique à $~)
$= L’indicateur d’insensibilité à la casse
$/ Séparateur d’enregistrement d’entrée
$\ Séparateur d’enregistrement de sortie
. séparateur d’enregistrement de sortie
Le nom du fichier de script ruby en cours d’exécution
$* Les arguments de ligne de commande utilisés pour invoquer le script
$$ L’ID du processus de l’interpréteur Ruby
$? L’état de sortie du dernier processus enfant exécuté

Par exemple nous pouvons exécuter la méthode gets pour prendre l’entrée du clavier, et ensuite faire référence à la variable $_ pour récupérer la valeur saisie :

irb(main):005:0> getshello=> "hello\n"irb(main):006:0> $_=> "hello\n"

Alternativement, nous pourrions trouver l’ID du processus de l’interpréteur Ruby :

irb(main):007:0> $$=> 17403

Variables de classe Ruby

Une variable de classe est une variable qui est partagée entre toutes les instances d’une classe. Cela signifie qu’une seule valeur de variable existe pour tous les objets instanciés à partir de cette classe. Cela signifie que si une instance d’objet change la valeur de la variable, cette nouvelle valeur changera essentiellement pour toutes les autres instances d’objets.

Une autre façon de penser aux variables de classe est de les considérer comme des variables globales dans le contexte d’une seule classe.

Les variables de classe sont déclarées en préfixant le nom de la variable par deux caractères @ (@@). Les variables de classe doivent être initialisées au moment de la création. Par exemple :

@@total = 0

Variables d’instance Ruby

Les variables d’instance sont similaires aux variables de classe sauf que leurs valeurs sont locales à des instances spécifiques d’un objet. Par exemple, si une classe contient une variable d’instance appelée @total, si une instance de l’objet modifie la valeur actuelle de @total, le changement est local uniquement à l’objet qui a effectué le changement. Les autres objets de la même classe ont leurs propres copies locales de la variable qui sont indépendantes des changements effectués dans tout autre objet.

Les variables d’instance sont déclarées en Ruby en faisant précéder le nom de la variable d’un seul signe @:

@total = 10

Portée des constantes Ruby

Les constantes Ruby sont des valeurs qui, une fois assignées, ne devraient pas être modifiées. Je dis « devraient » car Ruby diffère de la plupart des langages de programmation en ce qu’il permet de modifier la valeur d’une constante après qu’elle ait été déclarée, bien que l’interpréteur proteste légèrement avec un message d’avertissement.

Les constantes déclarées à l’intérieur d’une classe ou d’un module sont disponibles partout dans le contexte de cette classe ou de ce module. Les constantes déclarées en dehors d’une classe ou d’un module se voient attribuer une portée globale.

Achetez et téléchargez les éditions complètes PDF et ePub de ce livre électronique sur Ruby pour seulement 8 $.99

.

Précédent Table des matières Suivant
Comprendre les variables Ruby Classes de nombres et conversions Ruby

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.