English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Opérateurs Ruby

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.).

Opérateurs arithmétiques Ruby

Hypothétiquement, la valeur de la variable a est 10La valeur de la variable b est 2Si 0, alors :

OpérateurDescription示例
+Addition - Ajouter les opérandes des deux côtés de l'opérateura + b recevra 30
-Soustraction - Soustrait l'opérande de gauche de l'opérande de droitea - b recevra -10
*Multiplication - Multiplie les opérandes des deux côtés de l'opérateura * b recevra 200
/Division - Divise l'opérande de gauche par l'opérande de droiteb / a recevra 2
%Reste - Divise l'opérande de gauche par l'opérande de droite, retourne le resteb % a recevra 0
**Exponentielle - Effectuer un calcul exponentiela**b recevra 10 de 20 puissance

Opérateurs de comparaison Ruby

Hypothétiquement, la valeur de la variable a est 10La valeur de la variable b est 2Si 0, alors :

OpérateurDescription示例
==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.

Opérateur d'assignation Ruby

Hypothétiquement, la valeur de la variable a est 10La valeur de la variable b est 2Si 0, alors :

OpérateurDescription示例
=Opérateur d'assignation simple, assigne la valeur de l'opérande de droite à l'opérande de gauchec = 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 gauchec += 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 gauchec -= 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 gauchec *= 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 gauchec /= 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 gauchec %= a é équivalent à c = c % a
**=Opérateur exponentiel et affectation, effectue le calcul exponentiel et affecte le résultat à l'opérande de gauchec **= a est équivalent à c = c ** a

Affectation parallèle Ruby

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

Opérateurs de bit Ruby

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érateurDescription示例
&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

Opérateurs logiques Ruby

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érateurDescription示例
andAppelé opérateur logique et. Si les deux opérandes sont vrais, la condition est vraie.(a and b) est vrai.
orAppelé 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.
notOpé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) 为假。

Ruby 三元运算符

有一个以上的操作称为三元运算符。第一个计算表达式的真假值,然后根据这个结果决定执行后边两个语句中的一个。条件运算符的语法如下:

OpérateurDescription示例
? :条件表达式if 条件为真 ? 则值为 X : 否则值为 Y

Ruby 范围运算符

在 Ruby 中,序列范围用于创建一系列连续的值 - 包含起始值、结束值(视情况而定)和它们之间的值。

在 Ruby 中,这些序列是使用 ".." 和 "..." 范围运算符来创建的。两点形式创建的范围包含起始值和结束值,三点形式创建的范围只包含起始值不包含结束值。

OpérateurDescription示例
..创建一个从开始点到结束点的范围(包含结束点)1..10 创建从 1 到 10 的范围
...创建一个从开始点到结束点的范围(不包含结束点)1...10 创建从 1 到 9 的范围

Ruby defined? 运算符

defined? 是一个特殊的运算符,以方法调用的形式来判断传递的表达式是否已定义。它返回表达式的描述字符串,如果表达式未定义则返回 nil

下面是 defined? 运算符的各种用法:

用法 1

defined? variable # 如果 variable 已经初始化,则为 True

例如:

foo = 42
defined? foo  # => "local"-variable"
defined? $_  # => "global"-variable"
defined? bar  # => nil(未定义)

用法 2

defined? method_call # 如果方法已经定义,则为 True

例如:

defined? puts  # => "method"
defined? puts(bar)  # => nil(在这里 bar 未定义)
defined? unpack  # => nil(在这里未定义)

用法 3

# 如果存在可被 super 用户调用的方法,则为 True
defined? super

例如:

defined? super  # => "super"(如果可被调用)
defined? super  # => nil(如果不可被调用)

用法 4

defined? yield  # 如果已传递代码块,则为 True

例如:

defined? yield  # => "yield"(如果已传递块)
defined? yield    # => nil(si aucun bloc n'est passé)

Opérateur point Ruby "." et opérateur double deux-points "::"

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

Priorité des opérateurs Ruby

Le tableau suivant liste tous les opérateurs par ordre de priorité décroissant.

MéthodeOpérateurDescription
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

notNégation logique

ou etComposants 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.