English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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).
Supondo que o valor da variável a seja 10O valor da variável b é 2Se 0, então:
Operador | Descrição | exemplo |
---|---|---|
+ | Adição - Adicionar os operandos dos operadores aos lados | a + b vai receber 30 |
- | Subtração - Subtrair o operando esquerdo pelo operando direito | a - b vai receber -10 |
* | Multiplicação - Multiplicar os operandos dos dois lados do operador | a * b vai receber 200 |
/ | Divisão - Dividir o operando esquerdo pelo operando direito | b / a vai receber 2 |
% | Módulo - Dividir o operando esquerdo pelo operando direito, retornar o resto | b % a vai receber 0 |
** | 指数 - Executar cálculo exponencial | a**b vai receber 10 do 20^ |
Supondo que o valor da variável a seja 10O valor da variável b é 2Se 0, então:
Operador | Descrição | exemplo |
---|---|---|
== | 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. |
Supondo que o valor da variável a seja 10O valor da variável b é 2Se 0, então:
Operador | Descrição | exemplo |
---|---|---|
= | Operador de atribuição simples, atribui o valor do operando direito ao operando esquerdo | c = 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 esquerdo | c += 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 esquerdo | c -= 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 esquerdo | c *= 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 esquerdo | c /= a é equivalente a c = c / a |
%= | Operador de módulo e atribuição, atribui o módulo dos dois operandos ao operando esquerdo | c %= 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 |
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
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.
Operador | Descrição | exemplo |
---|---|---|
& | 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 |
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:
Operador | Descrição | exemplo |
---|---|---|
and | Chamado de operador lógico e. Se ambos os operandos forem verdadeiros, a condição é verdadeira. | (a and b) é verdadeiro. |
or | Chamado 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ão | 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. | not(a && b) é falso. |
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:
Operador | Descrição | exemplo |
---|---|---|
? : | expressão condicional | se a condição for verdadeira ? então o valor é X : caso contrário o valor é Y |
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.
Operador | Descrição | exemplo |
---|---|---|
.. | 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 |
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?
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)
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)
# 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)
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)
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
A tabela a seguir lista todos os operadores em ordem de prioridade, de alta para baixa.
Método | Operador | Descrição |
---|---|---|
é | :: | Operador de parsing de constante |
é | [ ] [ ]= | 元素引用、元素集合 |
é | ** | 指数 |
é | ! ~ + - | 非、补、一元加、一元减(最后两个的方法名为 +@ 和 -@) |
é | * / % | 乘法、除法、求模 |
é | + - | 加法和减法 |
é | >> << | 位右移、位左移 |
é | & | 位与 |
é | ^ | | 位异或、位或 |
é | <= < > >= | 比较运算符 |
é | <=> == === != =~ !~ | 相等和模式匹配运算符(!= 和 !~ 不能被定义为方法) |
&& | 逻辑与 | |
-- | ||
= /= -= += *= **= | Atribuição | |
defined? | Verificar se o símbolo especificado já está definido | |
não | Negação Lógica | |
ou e | Composição Lógica |
Atenção:Listado em métodos como é Os operadores são métodos, portanto, podem ser sobrecarregados.