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

Operadores Ruby

O Ruby suporta um conjunto rico de operadores. A maioria dos operadores é chamada de método. Por exemplo, a + b é interpretado como a.+(b), onde aponta para a variável a + O método é chamado, b como parâmetro da chamada do método.

Para cada operador (+ - * / % ** & | ^ << >> && ||) têm um operador de atribuição abreviado correspondente (+= -= etc).

Operadores aritméticos do Ruby

Supondo que o valor da variável a seja 10O valor da variável b é 2Se 0, então:

OperadorDescriçãoexemplo
+Adição - Adicionar os operandos dos operadores aos ladosa + b vai receber 30
-Subtração - Subtrair o operando esquerdo pelo operando direitoa - b vai receber -10
*Multiplicação - Multiplicar os operandos dos dois lados do operadora * b vai receber 200
/Divisão - Dividir o operando esquerdo pelo operando direitob / a vai receber 2
%Módulo - Dividir o operando esquerdo pelo operando direito, retornar o restob % a vai receber 0
**指数 - Executar cálculo exponenciala**b vai receber 10 do 20^

Operadores de comparação do Ruby

Supondo que o valor da variável a seja 10O valor da variável b é 2Se 0, então:

OperadorDescriçãoexemplo
==Verifica se os valores dos dois operandos são iguais, se forem, a condição é verdadeira.(a == b) não é verdadeiro.
!=Verifica se os valores dos dois operandos são iguais, se não forem, a condição é verdadeira.(a != b) é verdadeiro.
>Verifica se o valor do operando esquerdo é maior que o valor do operando direito, se for, a condição é verdadeira.(a > b) não é verdadeiro.
<Verifica se o valor do operando esquerdo é menor que o valor do operando direito, se for, a condição é verdadeira.(a < b) é verdadeiro.
>=Verifica se o valor do operando esquerdo é maior ou igual ao valor do operando direito, se for, a condição é verdadeira.(a >= b) não é verdadeiro.
<=Verifica se o valor do operando esquerdo é menor ou igual ao valor do operando direito, se for, a condição é verdadeira.(a <= b) é verdadeiro.
<=>Operador de comparação combinada. Se o primeiro operando for igual ao segundo operando, retorna 0, se o primeiro operando for maior que o segundo operando, retorna 1,se o primeiro operando for menor que o segundo operando, retorna -1.(a <=> b) retorna -1.
===Usado para testar case Comparação de igualdade dentro da cláusula when da sentença.(1...10) === 5 Retorna true.
.eql?Se o receptor e os parâmetros tiverem o mesmo tipo e valores iguais, retorna true.1 == 1.0 retorna true, mas 1.eql?(1.0) retorna false.
equal?Se o receptor e os parâmetros tiverem o mesmo id de objeto, retorna true.Se aObj é uma cópia de bObj, então aObj == bObj retorna true, a.equal?bObj retorna false, mas a.equal?aObj retorna true.

Operador de atribuição do Ruby

Supondo que o valor da variável a seja 10O valor da variável b é 2Se 0, então:

OperadorDescriçãoexemplo
=Operador de atribuição simples, atribui o valor do operando direito ao operando esquerdoc = a + b vai atribuir a + O valor de b é atribuído a c
+=Operador de adição e atribuição, atribui o resultado da adição do operando direito pelo operando esquerdo ao operando esquerdoc += a é equivalente a c = c + a
-=Operador de subtração e atribuição, atribui o resultado da subtração do operando esquerdo pelo operando direito ao operando esquerdoc -= a é equivalente a c = c - a
*=Operador de multiplicação e atribuição, atribui o resultado da multiplicação do operando direito pelo operando esquerdo ao operando esquerdoc *= a é equivalente a c = c * a
/=Operador de divisão e atribuição, atribui o resultado da divisão do operando esquerdo pelo operando direito ao operando esquerdoc /= a é equivalente a c = c / a
%=Operador de módulo e atribuição, atribui o módulo dos dois operandos ao operando esquerdoc %= a é equivalente a c = c % a
**=Operador de exponenciação e atribuição, que realiza a computação de exponenciação e atribui ao operando à esquerda.c **= a é equivalente a c = c ** a

Atribuição paralela do Ruby

O Ruby também suporta a atribuição paralela de variáveis. Isso permite que várias variáveis sejam inicializadas em uma linha de código Ruby. Por exemplo:

a = 10
b = 20
c = 30

A atribuição paralela permite declarar mais rapidamente:

a, b, c = 10, 20, 30

A atribuição paralela é muito útil ao trocar os valores de duas variáveis:

a, b = b, c

Operadores de bit do Ruby

Os operadores de bit agem sobre os bits e executam operações bit a bit.

Supondo que se a = 60, e b = 13Agora, em formato binário, eles são assim:

a = 0011 1100

b = 0000 1101

-----------------

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a = 1100 0011

A tabela a seguir lista os operadores de bit suportados pelo Ruby.

OperadorDescriçãoexemplo
&Se existir em ambos os operandos, o operador AND binário copia um bit para o resultado.(a & b) será 120000 1100
|Se existir em qualquer um dos operandos, o operador OR binário copia um bit para o resultado.(a | b) será 61Então11 1101
^(a ^ b) será 49Então11 0001
~O operador de complemento de dois binário é um operador unário, com efeito de "inverter", ou seja, 0 torna-se1,1tornar-se 0.(~a) será -61Então 1100 0011Uma forma de complemento de dois de um número binário signed.
<<Operador de deslocamento binário à esquerda. O valor do operando à esquerda é movido para a esquerda pela quantidade especificada pelo operando à direita.a << 2 Será obtido 240, então 1111 0000
>>Operador de deslocamento binário à direita. O valor do operando à esquerda é movido para a direita pela quantidade especificada pelo operando à direita.a >> 2 Será obtido 150000 1111

Operadores lógicos do Ruby

A tabela a seguir lista os operadores lógicos suportados pelo Ruby.

Supondo que o valor da variável a seja 10O valor da variável b é 2Se 0, então:

OperadorDescriçãoexemplo
andChamado de operador lógico e. Se ambos os operandos forem verdadeiros, a condição é verdadeira.(a and b) é verdadeiro.
orChamado de operador lógico ou. Se qualquer um dos operandos for não nulo, a condição é verdadeira.(a or b) é verdadeiro.
&&Chamado de operador lógico e. Se ambos os operandos forem não nulos, a condição é verdadeira.(a && b) é verdadeiro.
Chamado de operador lógico ou. Se qualquer um dos operandos for não nulo, a condição é verdadeira.(a || b) é verdadeiro.
!Operador lógico de não. Usado para inverter o estado lógico do operando. Se a condição for verdadeira, o operador lógico de não a tornará falsa.!(a && b) é falso.
nãoOperador lógico de não. Usado para inverter o estado lógico do operando. Se a condição for verdadeira, o operador lógico de não a tornará falsa.not(a && b) é falso.

operador ternário do Ruby

Há mais de uma operação chamada operador ternário. A primeira calcula o valor verdadeiro ou falso da expressão, e então decide qual dos dois comandos seguintes executar com base no resultado. A sintaxe do operador condicional é a seguinte:

OperadorDescriçãoexemplo
? :expressão condicionalse a condição for verdadeira ? então o valor é X : caso contrário o valor é Y

operador de intervalo do Ruby

No Ruby, os intervalos de sequência são usados para criar uma série de valores contínuos - inclusivo do valor de início, valor de fim (dependendo do caso) e os valores entre eles.

No Ruby, essas sequências são criadas usando os operadores de intervalo ".." e "...". O formato de dois pontos cria um intervalo que inclui o valor de início e o valor de fim, enquanto o formato de três pontos cria um intervalo que inclui apenas o valor de início e não inclui o valor de fim.

OperadorDescriçãoexemplo
..criar um intervalo a partir do ponto de início até o ponto de fim (incluindo o ponto de fim)1..10 criar de 1 até 10 espaço
...criar um intervalo a partir do ponto de início até o ponto de fim (não incluindo o ponto de fim)1...10 criar de 1 até 9 espaço

operador defined? do Ruby

definido? é um operador especial, que usa a forma de chamada de método para determinar se uma expressão foi definida. Ele retorna a string de descrição da expressão, retornando nil.

A seguir estão várias usos do operador defined?

usabilidade 1

definido? variável # Se a variável já foi inicializada, é True

por exemplo:

foo = 42
definido? foo # => "local"-variável"
definido? $_ # => "global"-variável"
definido? bar # => nil (não definido)

usabilidade 2

definido? method_call # Se o método já foi definido, é True

por exemplo:

definido? puts # => "método"
definido? puts(bar) # => nil (aqui bar não definido)
definido? unpack # => nil (aqui não definido)

usabilidade 3

# Se há um método chamável super para o usuário, é True
definido? super

por exemplo:

definido? super # => "super" (se pode ser chamado)
definido? super # => nil (se não pode ser chamado)

usabilidade 4

definido? yield # Se um bloco foi passado, é True

por exemplo:

definido? yield # => "yield" (se um bloco foi passado)
defined? yield # => nil (se não for passado um bloco)

O operador ponto "." e o operador de dois dois-pontos "::" do Ruby

Você pode chamar métodos dentro da classe ou módulo adicionando o nome da classe ou módulo e . ao nome do método. Você pode usar o nome da classe ou módulo e dois dois-pontos :: para referenciar constantes dentro da classe ou módulo.

:: é um operador unário, que permite definir constantes, métodos de exemplo e métodos de classe dentro de uma classe ou módulo, e pode ser acessado de qualquer lugar fora da classe ou módulo.

Lembre-se:Em Ruby, classes e métodos também podem ser usados como constantes.

Você precisa apenas adicionar o nome do constante antes da expressão. :: Prefixo, para retornar o objeto apropriado da classe ou módulo.

Se a expressão antes de :: for o nome de uma classe ou módulo, retorna o valor da constante correspondente dentro da classe ou módulo; se não houver expressão prefixada antes de ::, retorna o valor da constante correspondente na classe principal Object. .

A seguir estão dois exemplos:

MR_COUNT = 0 # Definido na classe principal Object
module Foo
  MR_COUNT = 0
  ::MR_COUNT = 1    # Define o contador global 1
  MR_COUNT = 2      # Define o contador local 2
end
puts MR_COUNT # É a constante global
puts Foo::MR_COUNT # É a constante local do "Foo"

Segundo exemplo:

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

Prioridade dos operadores do Ruby

A tabela a seguir lista todos os operadores em ordem de prioridade, de alta para baixa.

MétodoOperadorDescrição
é::Operador de parsing de constante
é[ ] [ ]=元素引用、元素集合
é**指数
é! ~ + -非、补、一元加、一元减(最后两个的方法名为 +@ 和 -@)
é* / %乘法、除法、求模
é+ -加法和减法
é>> <<位右移、位左移
é&位与
é^ |位异或、位或
é<= < > >=比较运算符
é<=> == === != =~ !~相等和模式匹配运算符(!= 和 !~ 不能被定义为方法)

&&逻辑与



--

= /= -= += *= **=Atribuição

defined?Verificar se o símbolo especificado já está definido

nãoNegação Lógica

ou eComposição Lógica

Atenção:Listado em métodos como é Os operadores são métodos, portanto, podem ser sobrecarregados.