English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ruby prend en charge une série d'opérateurs riches. La plupart des opérateurs sont des appels de méthode. Par exemple, a + b est interprété comme a.+(b), où il pointe sur la variable a + La méthode est appelée, b en tant que paramètre de l'appel de méthode.
Pour chaque opérateur (+ - * / % ** & | ^ << >> && ||) ont un opérateur d'affectation raccourci correspondant (+= -= etc.).
Hypothétiquement, la valeur de la variable a est 10La valeur de la variable b est 2Si 0, alors :
Opérateur | Description | 示例 |
---|---|---|
+ | Addition - Ajouter les opérandes des deux côtés de l'opérateur | a + b recevra 30 |
- | Soustraction - Soustrait l'opérande de gauche de l'opérande de droite | a - b recevra -10 |
* | Multiplication - Multiplie les opérandes des deux côtés de l'opérateur | a * b recevra 200 |
/ | Division - Divise l'opérande de gauche par l'opérande de droite | b / a recevra 2 |
% | Reste - Divise l'opérande de gauche par l'opérande de droite, retourne le reste | b % a recevra 0 |
** | Exponentielle - Effectuer un calcul exponentiel | a**b recevra 10 de 20 puissance |
Hypothétiquement, la valeur de la variable a est 10La valeur de la variable b est 2Si 0, alors :
Opérateur | Description | 示例 |
---|---|---|
== | Vérifie si les valeurs des deux opérandes sont égales, et si elles le sont, la condition est vraie. | (a == b) n'est pas vrai. |
!= | Vérifie si les valeurs des deux opérandes sont égales, et si elles ne le sont pas, la condition est vraie. | (a != b) est vrai. |
> | Vérifie si la valeur de l'opérande de gauche est supérieure à la valeur de l'opérande de droite, et si c'est le cas, la condition est vraie. | (a > b) n'est pas vrai. |
< | Vérifie si la valeur de l'opérande de gauche est inférieure à la valeur de l'opérande de droite, et si c'est le cas, la condition est vraie. | (a < b) est vrai. |
>= | Vérifie si la valeur de l'opérande de gauche est supérieure ou égale à la valeur de l'opérande de droite, et si c'est le cas, la condition est vraie. | (a >= b) n'est pas vrai. |
<= | Vérifie si la valeur de l'opérande de gauche est inférieure ou égale à la valeur de l'opérande de droite, et si c'est le cas, la condition est vraie. | (a <= b) est vrai. |
<=> | Opérateur de comparaison combinée. Si le premier opérande est égal au second opérande, il retourne 0, si le premier opérande est supérieur au second opérande, il retourne 1si le premier opérande est inférieur au second opérande, il retourne -1。 | (a <=> b) retourne -1。 |
=== | Utilisé pour tester case Égalité dans la clause when de l'expression. | (1...10) === 5 Renvoie true. |
.eql? | Renvoie true si le récepteur et les paramètres ont le même type et les mêmes valeurs. | 1 == 1.0 renvoie true, mais 1.eql?(1.0) renvoie false. |
equal? | Si le récepteur et les paramètres ont le même id d'objet, renvoie true. | Si aObj est une copie de bObj, alors aObj == bObj renvoie true, a.equal?bObj renvoie false, mais a.equal?aObj renvoie true. |
Hypothétiquement, la valeur de la variable a est 10La valeur de la variable b est 2Si 0, alors :
Opérateur | Description | 示例 |
---|---|---|
= | Opérateur d'assignation simple, assigne la valeur de l'opérande de droite à l'opérande de gauche | c = a + b assignera à a + La valeur de b est assignée à c |
+= | Opérateur d'assignation d'addition, assigne le résultat de l'addition de l'opérande de droite à l'opérande de gauche à l'opérande de gauche | c += a est équivalent à c = c + a |
-= | Opérateur d'assignation de soustraction, assigne le résultat de la soustraction de l'opérande de droite de l'opérande de gauche à l'opérande de gauche | c -= a est équivalent à c = c - a |
*= | Opérateur d'assignation de multiplication, assigne le résultat de la multiplication de l'opérande de droite par l'opérande de gauche à l'opérande de gauche | c *= a est équivalent à c = c * a |
/= | Opérateur d'assignation de division, assigne le résultat de la division de l'opérande de gauche par l'opérande de droite à l'opérande de gauche | c /= a est équivalent à c = c / a |
%= | Opérateur d'assignation de reste, assigne le reste de la division de deux opérandes à l'opérande de gauche | c %= a é équivalent à c = c % a |
**= | Opérateur exponentiel et affectation, effectue le calcul exponentiel et affecte le résultat à l'opérande de gauche | c **= a est équivalent à c = c ** a |
Ruby prend également en charge l'affectation parallèle des variables. Cela permet à plusieurs variables d'être initialisées en une seule ligne de code Ruby. Par exemple :
a = 10 b = 20 c = 30
L'affectation parallèle permet de déclarer plus rapidement :
a, b, c = 10, 20, 30
L'affectation parallèle est très utile pour échanger les valeurs de deux variables :
a, b = b, c
Les opérateurs de bit agissent sur les bits et exécutent des opérations bit par bit.
Hypothétiquement, si a = 60, et b = 13Maintenant, en format binaire, ils sont les suivants :
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
Le tableau suivant liste les opérateurs binaire pris en charge par Ruby.
Opérateur | Description | 示例 |
---|---|---|
& | Si il existe dans les deux opérandes, l'opérateur de AND binaire copie un bit dans le résultat. | (a & b) donnera 12C'est-à-dire 0000 1100 |
| | Si il existe dans l'un des opérandes, l'opérateur de OR binaire copie un bit dans le résultat. | (a | b) donnera 61C'est-à-dire 0011 1101 |
^ | Si il existe dans l'un des opérandes mais pas dans les deux opérandes, l'opérateur de xor binaire copie un bit dans le résultat. | (a ^ b) donnera 49C'est-à-dire 0011 0001 |
~ | L'opérateur de complément binaire est un opérateur unaire, ayant un effet de "inversion" de bits, c'est-à-dire que 0 devient1,1devient 0. | (~a) donnera -61C'est-à-dire 1100 0011C'est une forme de complément à deux entiers binaires. |
<< | Opérateur de déplacement binnaire à gauche. La valeur de l'opérande de gauche est déplacée vers la gauche de la position indiquée par l'opérande de droite. | a << 2 On obtient 240, c'est-à-dire 1111 0000 |
>> | Opérateur de déplacement binnaire à droite. La valeur de l'opérande de gauche est déplacée vers la droite de la position indiquée par l'opérande de droite. | a >> 2 On obtient 15C'est-à-dire 0000 1111 |
Le tableau suivant liste les opérateurs logiques pris en charge par Ruby.
Hypothétiquement, la valeur de la variable a est 10La valeur de la variable b est 2Si 0, alors :
Opérateur | Description | 示例 |
---|---|---|
and | Appelé opérateur logique et. Si les deux opérandes sont vrais, la condition est vraie. | (a and b) est vrai. |
or | Appelé opérateur logique ou. Si l'un des deux opérandes n'est pas nul, la condition est vraie. | (a or b) est vrai. |
&& | Appelé opérateur logique et. Si les deux opérandes ne sont pas nuls, la condition est vraie. | (a && b) est vrai. |
|| | Appelé opérateur logique ou. Si l'un des deux opérandes n'est pas nul, la condition est vraie. | (a || b) est vrai. |
! | Opérateur de non logique. Utilisé pour inverser l'état logique de l'opérande. Si la condition est vraie, l'opérateur de non logique la rend fausse. | !(a && b) est faux. |
not | Opérateur de non logique. Utilisé pour inverser l'état logique de l'opérande. Si la condition est vraie, l'opérateur de non logique la rend fausse. | not(a && b) 为假。 |
有一个以上的操作称为三元运算符。第一个计算表达式的真假值,然后根据这个结果决定执行后边两个语句中的一个。条件运算符的语法如下:
Opérateur | Description | 示例 |
---|---|---|
? : | 条件表达式 | if 条件为真 ? 则值为 X : 否则值为 Y |
在 Ruby 中,序列范围用于创建一系列连续的值 - 包含起始值、结束值(视情况而定)和它们之间的值。
在 Ruby 中,这些序列是使用 ".." 和 "..." 范围运算符来创建的。两点形式创建的范围包含起始值和结束值,三点形式创建的范围只包含起始值不包含结束值。
Opérateur | Description | 示例 |
---|---|---|
.. | 创建一个从开始点到结束点的范围(包含结束点) | 1..10 创建从 1 到 10 的范围 |
... | 创建一个从开始点到结束点的范围(不包含结束点) | 1...10 创建从 1 到 9 的范围 |
defined? 是一个特殊的运算符,以方法调用的形式来判断传递的表达式是否已定义。它返回表达式的描述字符串,如果表达式未定义则返回 nil。
下面是 defined? 运算符的各种用法:
defined? variable # 如果 variable 已经初始化,则为 True
例如:
foo = 42 defined? foo # => "local"-variable" defined? $_ # => "global"-variable" defined? bar # => nil(未定义)
defined? method_call # 如果方法已经定义,则为 True
例如:
defined? puts # => "method" defined? puts(bar) # => nil(在这里 bar 未定义) defined? unpack # => nil(在这里未定义)
# 如果存在可被 super 用户调用的方法,则为 True defined? super
例如:
defined? super # => "super"(如果可被调用) defined? super # => nil(如果不可被调用)
defined? yield # 如果已传递代码块,则为 True
例如:
defined? yield # => "yield"(如果已传递块) defined? yield # => nil(si aucun bloc n'est passé)
Vous pouvez appeler une méthode de la classe ou du module en ajoutant le nom de la classe ou du module et . devant le nom de la méthode. Vous pouvez utiliser le nom de la classe ou du module et deux deux-points :: pour faire référence à une constante de la classe ou du module.
:: est un opérateur unaire, qui permet de définir des constantes, des exemples de méthodes et des méthodes de classe à l'intérieur d'une classe ou d'un module, et peut être accédé à partir de n'importe où à l'extérieur de la classe ou du module.
Rappelez-vous :Dans Ruby, les classes et les méthodes peuvent également être utilisées comme des constantes.
Vous n'avez qu'à ajouter le nom du constant avant l'expression. :: Préfixe, vous pouvez retourner l'objet approprié de la classe ou du module.
Si l'expression avant :: est un nom de classe ou de module, elle renvoie la valeur correspondante de la classe ou du module ; si il n'y a pas d'expression précédente, elle renvoie la valeur de la classe principale Object. 。
Voici deux exemples :
MR_COUNT = 0 # Défini dans la classe principale Object module Foo MR_COUNT = 0 ::MR_COUNT = 1 # Définir le compteur global 1 MR_COUNT = 2 # Définir le compteur local 2 end puts MR_COUNT # C'est constant globale puts Foo::MR_COUNT # C'est "Foo" constant locale
Deuxième exemple :
CONST = ' out there' class Inside_one CONST = proc {' in there'} def where_is_my_CONST ::CONST + ' inside one' end end class Inside_two CONST = ' inside two' def where_is_my_CONST CONST end end puts Inside_one.new.where_is_my_CONST puts Inside_two.new.where_is_my_CONST puts Object::CONST + Inside_two::CONST puts Inside_two::CONST + CONST puts Inside_one::CONST puts Inside_one::CONST.call + Inside_two::CONST
Le tableau suivant liste tous les opérateurs par ordre de priorité décroissant.
Méthode | Opérateur | Description |
---|---|---|
est | :: | Opérateur de résolution constante |
est | [ ] [ ]= | Référence d'élément, ensemble d'éléments |
est | ** | Exponentielle |
est | ! ~ + - | Non, complément, ajout unilatéral, soustraction unilatérale (les noms des méthodes des deux derniers sont +@ et -@) |
est | * / % | Multiplication, division, modulo |
est | + - | Addition et soustraction |
est | >> << | Déplacement de bits à droite, déplacement de bits à gauche |
est | & | Et de bits |
est | ^ | | Opérations de XOR de bits, d'OR de bits |
est | <= < > >= | Opérateurs de comparaison |
est | <=> == === != =~ !~ | Opérateurs d'égalité et de correspondance de modèle (!= et !~ ne peuvent pas être définis comme des méthodes) |
&& | Et logique | |
|| | Ou logique | |
.. ... | Portée (comprise, non comprise) | |
? : | if ternaire-then-else | |
= %= { /= -= += |= &= >>= <<= *= &&= ||= **= | Affectation | |
defined? | Vérifiez si le symbole spécifié est défini | |
not | Négation logique | |
ou et | Composants logiques |
Attention :est identifié dans la liste des méthodes sous est Les opérateurs sont en fait des méthodes, donc ils peuvent être redéfinis.