Ruby Opérateurs
Ruby prend en charge un riche ensemble d'opérateurs. La plupart des opérateurs sont en fait des appels de méthodes. Par exemple, a + b est interprété comme a.+(b), où la méthode + sur la variable a est invoquée, avec b comme argument de l'appel de méthode.
Pour chaque opérateur (+ - * / % ** & | ^ << >> && ||), il existe un opérateur d'affectation abrégé correspondant (+= -= et ainsi de suite).
Opérateurs arithmétiques Ruby
Supposons que la variable a soit 10 et que la variable b soit 20, alors :
| Operator | Description | Exemple |
|---|---|---|
| + | Addition - Ajoute les opérandes des deux côtés de l'opérateur. | a + b donnera 30 |
| - | Soustraction - Soustrait l'opérande de droite de l'opérande de gauche. | a - b donnera -10 |
| * | Multiplication - Multiplie les opérandes de part et d'autre de l'opérateur. | a * b donnera 200 |
| / | Division - Divise l'opérande de gauche par l'opérande de droite. | b / a donnera 2 |
| % | Modulo - Divise l'opérande de gauche par l'opérande de droite et renvoie le reste. | b % a donnera 0 |
| ** | Exposant - Effectue l'exponentiation. | a**b donnera 10 à la puissance 20 |
Opérateurs de comparaison Ruby
Supposons que la variable a soit 10 et que la variable b soit 20, alors :
| Operator | Description | Exemple |
|---|---|---|
| == | Vérifie si les valeurs de deux opérandes sont égales ; si oui, la condition devient vraie. | (a == b) n'est pas vrai. |
| != | Vérifie si les valeurs de deux opérandes sont égales ; si elles ne sont pas égales, la condition devient vraie. | (a != b) est vrai. |
| > | Vérifie si la valeur de l'opérande gauche est supérieure à la valeur de l'opérande droit ; si oui, la condition devient vraie. | (a > b) n'est pas vrai. |
| < | Vérifie si la valeur de l'opérande gauche est inférieure à la valeur de l'opérande droit ; si oui, la condition devient vraie. | (a < b) est vrai. |
| >= | Vérifie si la valeur de l'opérande gauche est supérieure ou égale à la valeur de l'opérande droit ; si oui, la condition devient vraie. | (a >= b) n'est pas vrai. |
| <= | Vérifie si la valeur de l'opérande gauche est inférieure ou égale à la valeur de l'opérande droit ; si oui, la condition devient vraie. | (a <= b) est vrai. |
| <=> | Opérateur de comparaison combiné. Renvoie 0 si le premier opérande est égal au second opérande, 1 si le premier opérande est supérieur au second opérande, et -1 si le premier opérande est inférieur au second opérande. | (a <=> b) renvoie -1. |
| === | Utilisé pour tester l'égalité decasedans la clause when d'une instruction case. | (1...10) === 5 renvoie true. |
| .eql? | Renvoie true si le récepteur et l'argument ont le même type et des valeurs égales. | 1 == 1.0 renvoie true, mais 1.eql?.eql?(1.0) renvoie false. |
| equal? | Renvoie true si le récepteur et l'argument ont le même identifiant d'objet. | Si aObj est une copie de bObj, alors aObj == bObj renvoie true, a.equal?.equal? bObj renvoie false, mais a.equal?.equal? aObj renvoie true. |
Opérateurs d'affectation Ruby
Supposons que la variable a soit 10 et que la variable b soit 20, alors :
| Operator | Description | Exemple |
|---|---|---|
| = | Opérateur d'affectation simple. Affecte la valeur de l'opérande droit à l'opérande gauche. | c = a + b affectera la valeur de a + b à c. |
| += | Opérateur d'addition et d'affectation. Ajoute l'opérande droit à l'opérande gauche et affecte le résultat à l'opérande gauche. | c += a est équivalent à c = c + a. |
| -= | Opérateur de soustraction et d'affectation. Soustrait l'opérande droit de l'opérande gauche et affecte le résultat à l'opérande gauche. | c -= a équivaut à c = c - a. |
| *= | Opérateur de multiplication et d'affectation. Multiplie l'opérande droit par l'opérande gauche et affecte le résultat à l'opérande gauche. | c *= a équivaut à c = c * a. |
| /= | Opérateur de division et d'affectation. Divise l'opérande gauche par l'opérande droit et affecte le résultat à l'opérande gauche. | c /= a équivaut à c = c / a. |
| %= | Opérateur de modulo et d'affectation. Calcule le modulo des deux opérandes et l'affecte à l'opérande gauche. | c %= a équivaut à c = c % a. |
| **= | Opérateur d'exponentiation et d'affectation. Effectue une exponentiation et affecte le résultat à l'opérande gauche. | c **= a équivaut à c = c ** a. |
Affectation parallèle en Ruby
Ruby prend également en charge l'affectation parallèle de variables. Cela permet d'initialiser plusieurs variables dans une seule ligne de code Ruby. Par exemple :
Vous pouvez déclarer plus rapidement en utilisant l'affectation parallèle :
L'affectation parallèle est également utile pour échanger les valeurs de deux variables :
Opérateurs bit à bit de Ruby
Les opérateurs bit à bit opèrent sur les bits et effectuent des opérations bit par bit.
Supposons que a = 60 et b = 13 ; maintenant, au format binaire, ils sont comme suit :
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
Le tableau suivant répertorie les opérateurs bit à bit pris en charge par Ruby.
| Operator | Description | Exemple |
|---|---|---|
| & | L'opérateur AND binaire copie un bit dans le résultat s'il existe dans les deux opérandes. | (a & b) donnera 12, ce qui est 0000 1100 |
| | | L'opérateur OR binaire copie un bit dans le résultat s'il existe dans l'un ou l'autre des opérandes. | (a | b) donnera 61, ce qui est 0011 1101 |
| ^ | L'opérateur XOR binaire copie un bit dans le résultat s'il existe dans l'un des opérandes, mais pas dans les deux. | (a ^ b) donnera 49, ce qui est 0011 0001 |
| ~ | L'opérateur de complément binaire est un opérateur unaire qui a pour effet d'« inverser » les bits, c'est-à-dire que 0 devient 1 et 1 devient 0. | (~a ) donnera -61, soit 1100 0011, sous la forme du complément à deux d'un nombre binaire signé. |
| << | Opérateur de décalage binaire vers la gauche. La valeur de l'opérande gauche est décalée vers la gauche du nombre de bits spécifié par l'opérande droit. | a << 2 donnera 240, soit 1111 0000 |
| >> | Opérateur de décalage binaire à droite. La valeur de l'opérande de gauche est décalée vers la droite du nombre de bits spécifié par l'opérande de droite. | a >> 2 donnera 15, soit 0000 1111 |
Opérateurs logiques Ruby
Le tableau suivant répertorie les opérateurs logiques pris en charge par Ruby.
Supposons que la variable a soit 10 et que la variable b soit 20, alors :
| Operator | Description | Exemple |
|---|---|---|
| et | Appelé opérateur ET logique. Si les deux opérandes sont vrais, la condition devient vraie. | (a and b) est vrai. |
| ou | Appelé opérateur OU logique. Si l'un des opérandes est non nul, la condition devient vraie. | (a or b) est vrai. |
| && | Appelé opérateur ET logique. Si les deux opérandes sont non nuls, la condition devient vraie. | (a && b) est vrai. |
| || | Appelé opérateur OU logique. Si l'un des opérandes est non nul, la condition devient vraie. | (a || b) est vrai. |
| ! | Appelé l'opérateur NON logique. Utilisé pour inverser l'état logique d'un opérande. Si la condition est vraie, l'opérateur NON logique la rend fausse. | !(a && b) est faux. |
| not | Appelé l'opérateur NON logique. Utilisé pour inverser l'état logique d'un opérande. Si la condition est vraie, l'opérateur NON logique la rend fausse. | not(a && b) est faux. |
Opérateur ternaire Ruby
Un opérateur avec plus d'un opérande est appelé opérateur ternaire. D'abord, il évalue la valeur de vérité d'une expression, puis décide laquelle des deux instructions suivantes exécuter en fonction du résultat. La syntaxe de l'opérateur conditionnel est la suivante :
| Operator | Description | Exemple |
|---|---|---|
| ? : | Expression conditionnelle | Si la condition est vraie ? alors valeur X : sinon valeur Y |
Opérateurs d'intervalle Ruby
En Ruby, les intervalles de séquence sont utilisés pour créer une série de valeurs consécutives - contenant la valeur de début, la valeur de fin (selon la situation), et les valeurs intermédiaires.
En Ruby, ces séquences sont créées à l'aide des opérateurs d'intervalle ".." et "...". La forme à deux points crée un intervalle qui inclut les valeurs de début et de fin, tandis que la forme à trois points crée un intervalle qui inclut uniquement la valeur de début et n'inclut pas la valeur de fin.
| Operator | Description | Exemple |
|---|---|---|
| .. | Crée un intervalle du point de départ au point d'arrivée (point d'arrivée inclus) | 1..10 crée un intervalle de 1 à 10 |
| ... | Crée un intervalle du point de départ au point d'arrivée (point d'arrivée exclu) | 1...10 crée un intervalle de 1 à 9 |
Opérateur defined? de Ruby
defined? est un opérateur spécial qui prend la forme d'un appel de méthode pour déterminer si l'expression transmise est définie. Il renvoie une chaîne de description de l'expression, et si l'expression n'est pas définie, il renvoienil。
Voici diverses utilisations de l'opérateur defined? :
Utilisation 1
Exemple :
Utilisation 2
Exemple :
Utilisation 3
Exemple :
Utilisation 4
Exemple :
Opérateur point de Ruby "." et opérateur double deux-points "::"
Vous pouvez appeler une méthode dans une classe ou un module en préfixant le nom de la méthode avec le nom de la classe ou du module et.pour appeler une méthode dans une classe ou un module. Vous pouvez utiliser le nom de la classe ou du module et deux deux-points::pour faire référence à une constante dans une classe ou un module.
::est un opérateur unaire qui vous permet de définir des constantes, des méthodes d'instance et des méthodes de classe à l'intérieur d'une classe ou d'un module, accessible depuis n'importe où en dehors de la classe ou du module.
Rappel :En Ruby, les classes et les méthodes peuvent aussi être traitées comme des constantes.
Il vous suffit de préfixer le nom de la constante dans l'expression avec::préfixe pour renvoyer l'objet classe ou module approprié.
Si::l'expression avant le préfixe est un nom de classe ou de module, elle renvoie la valeur de constante correspondante dans cette classe ou ce module ; si::il n'y a pas d'expression de préfixe avant, elle renvoie la valeur de constante correspondante dans la classe Object principale.
Voici deux exemples :
Deuxième exemple :
Précédence des opérateurs Ruby
Le tableau suivant répertorie tous les opérateurs par ordre de précédence, du plus élevé au plus faible.
| Méthode | Operator | Description |
|---|---|---|
| Oui | :: | Opérateur de résolution de constante |
| Oui | [ ] [ ]= | Référence à un élément, affectation d'élément |
| Oui | ** | Exponentiation |
| Oui | ! ~ + - | Non, complément, plus unaire, moins unaire (les deux derniers ont pour noms de méthode +@ et -@) |
| Oui | * / % | Multiplication, division, modulo |
| Oui | + - | Addition et soustraction |
| Oui | >> << | Décalage à droite bit à bit, décalage à gauche bit à bit |
| Oui | & | ET bit à bit |
| Oui | ^ | | OU exclusif bit à bit, OU bit à bit |
| Oui | <= < > >= | Opérateurs de comparaison |
| Oui | <=> == === != =~ !~ | Opérateurs d'égalité et de correspondance de motifs (!= et !~ ne peuvent pas être définis comme méthodes) |
| && | ET logique | |
| || | OU logique | |
| .. ... | Intervalle (inclus, exclu) | |
| ? : | Ternaire si-alors-sinon | |
| = %= { /= -= += |= &= >>= <<= *= &&= ||= **= | Affectation | |
| defined? | Vérifie si le symbole spécifié est défini | |
| not | Négation logique | |
| or and | Composition logique |
Remarque :Dans la colonne des méthodes, ceux marqués commeOuiopérateurs sont en fait des méthodes, et peuvent donc être surchargés.
Autres extensions