Latest web development tutorials

Рубин Операторы

Рубин поддерживает богатый набор операторов. Большинство операторов на самом деле являются вызовы методов. Например, A + B интерпретируется как. + (В), в котором переменная а + способ указывающий вызывается, б в качестве параметра в вызове метода.

Для каждого оператора (+ - * /% ** & | ^ << >> && ||), имеет соответствующий оператор присваивания (аббревиатура + = - = и т.д.).

Рубин арифметические операторы

Предположим, что переменная а значение 10, значение переменной Ь 20, то:

运算符描述实例
+加法 - 把运算符两边的操作数相加 a + b 将得到 30
-减法 - 把左操作数减去右操作数 a - b 将得到 -10
*乘法 - 把运算符两边的操作数相乘 a * b 将得到 200
/除法 - 把左操作数除以右操作数 b / a 将得到 2
%求模 - 把左操作数除以右操作数,返回余数 b % a 将得到 0
**指数 - 执行指数计算 a**b 将得到 10 的 20 次方

Сравнение Рубин

Предположим, что переменная а значение 10, значение переменной Ь 20, то:

运算符描述实例
==检查两个操作数的值是否相等,如果相等则条件为真。 (a == b) 不为真。
!=检查两个操作数的值是否相等,如果不相等则条件为真。 (a != b) 为真。
>检查左操作数的值是否大于右操作数的值,如果是则条件为真。 (a > b) 不为真。
<检查左操作数的值是否小于右操作数的值,如果是则条件为真。 (a < b) 为真。
>=检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 (a >= b) 不为真。
<=检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 (a <= b) 为真。
<=>联合比较运算符。如果第一个操作数等于第二个操作数则返回 0,如果第一个操作数大于第二个操作数则返回 1,如果第一个操作数小于第二个操作数则返回 -1。 (a <=> b) 返回 -1。
===用于测试case语句的 when 子句内的相等。 (1...10) === 5 返回 true。
.eql?如果接收器和参数具有相同的类型和相等的值,则返回 true。 1 == 1.0 返回 true,但是 1.eql?(1.0) 返回 false。
equal?如果接收器和参数具有相同的对象 id,则返回 true。如果 aObj 是 bObj 的副本,那么 aObj == bObj 返回 true,a.equal?bObj 返回 false,但是 a.equal?aObj 返回 true。

Оператор присваивания Рубин

Предположим, что переменная а значение 10, значение переменной Ь 20, то:

运算符描述实例
=简单的赋值运算符,把右操作数的值赋给左操作数 c = a + b 将把 a + b 的值赋给 c
+=加且赋值运算符,把右操作数加上左操作数的结果赋值给左操作数 c += a 相当于 c = c + a
-=减且赋值运算符,把左操作数减去右操作数的结果赋值给左操作数 c -= a 相当于 c = c - a
*=乘且赋值运算符,把右操作数乘以左操作数的结果赋值给左操作数 c *= a 相当于 c = c * a
/=除且赋值运算符,把左操作数除以右操作数的结果赋值给左操作数 c /= a 相当于 c = c / a
%=求模且赋值运算符,求两个操作数的模赋值给左操作数 c %= a 相当于 c = c % a
**=指数且赋值运算符,执行指数计算,并赋值给左操作数 c **= a 相当于 c = c ** a

Рубин параллельное назначение

Рубин также поддерживает параллельные переменные назначения. Это позволяет использовать несколько переменных можно инициализировать строкой Руби кода. Например:

а = 10
б = 20
с = 30

Использование параллельного назначения быстрее Отказ от ответственности:

а, b, c = 10, 20, 30

Параллельное назначение при обмене значений двух переменных также полезны:

а, Ь = Ь, с

Рубин Побитовые операторы

Битовые операторы, действующие на бит, и по крупицам операции.

Если предположить, что а = 60, а Ь = 13, теперь в двоичном формате, который выглядит следующим образом:

а = 0011 1100

б = 0000 1101

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

& B = 0000 1100

а | Ь = 0011 1101

а ^ Ь = 0011 0001

~ A = 1100 0011

В следующей таблице перечислены Рубин поддержки битовые операторы.

операторы описание примеров
& Если оба они существуют в двух операндов, бинарный оператор И скопировать результат. (А & B) будет 12, то есть, 0000 1100
| Если он присутствует в любом операнде, бинарный оператор ИЛИ скопировать результат. (A | B) будет 61, это 00111101
^ Если он присутствует в одном из операнда, но не одновременно существовать в двух операндов, бинарного оператора XOR копию на результат. (А ^ Ь) будет 49, это 00110001
~ Двойки оператор дополнение является унарный оператор, А "флип" эффект положения. (~ A) будет -61, 1100 0011,2 дополняет форму двоичного числа со знаком.
<< Бинарный оператор левого сдвига. Значение левого операнда для перемещения влево и вправо операнда указанное количество цифр. а << 2 будет 240, то есть 11110000
>> Бинарный оператор правого сдвига. Значение левого операнда перемещения правого операнда на заданное число битов вправо. A >> 2 будет 15, то есть, 0000 1111

Рубин логические операторы

В следующей таблице перечислены поддержки Ruby логических операторов.

Предположим, что переменная а значение 10, значение переменной Ь 20, то:

运算符描述实例
and称为逻辑与运算符。如果两个操作数都为真,则条件为真。 (a and b) 为真。
or称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 (a or b) 为真。
&&称为逻辑与运算符。如果两个操作数都非零,则条件为真。 (a && b) 为真。
||称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 (a || b) 为真。
!称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 !(a && b) 为假。
not称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 not(a && b) 为假。

тернарный оператор Рубин

Существует более чем одно действие называется тернарный оператор. Первое значение вычисления истинности выражения, а затем решил реализовать два сзади в заявлении, на основании результата. Условный оператор имеет следующий синтаксис:

运算符描述实例
? :条件表达式如果条件为真 ? 则值为 X : 否则值为 Y

Оператор диапазона Рубин

В Ruby, последовательность используется для создания серии последовательных значения диапазона - содержит начальное значение, конечное значение (при наличии) и значения между ними.

В Ruby, эти последовательности является использование ".." и "..." операторов диапазона для создания. Диапазон содержит две формы создают начальные и конечные значения, диапазон трех, чтобы создать форму, которая содержит только конечное значение Начальное значение не входит в стоимость.

运算符描述实例
..创建一个从开始点到结束点的范围(包含结束点) 1..10 创建从 1 到 10 的范围
...创建一个从开始点到结束点的范围(不包含结束点) 1...10 创建从 1 到 9 的范围

Рубин определен? Оператор

определен? это специальный оператор, будь то в форме вызова метода передать выражение суждение определяется. Она возвращает строковое выражение описания, если выражение неопределенные возвращаетноль.

Ниже приведены различные операторы, определенные использования ?:

Использование 1

определяется? переменной # Если переменная была инициализирована Правда,

Например:

Foo = 42
определен? Foo # => "локальной переменной"
определяется? $ _ # => "глобальной переменной"
определяется? бар # => ноль (не определено)

Использование 2

определяется? method_call # Если метод был определен, True

Например:

определяется? ставит # "метод" =>
определяемые? путы (бар) # => ноль (не определено здесь бар)
определяется? распаковывать # => ноль (не определено здесь)

Использование 3

# Если метод может быть вызван в качестве привилегированного пользователя существует, то правда
определяется? супер

Например:

определяется? супер # => "супер" (если можно назвать)
определяется? супер # => ноль (если не ссылаться)

Использование 4

определена? выход # Если блок кода прошел Правда,

Например:

определена? Выход # => "Выход" (если передача блока)
определена? выход # => ноль (если не передать блок)

Рубин оператор точка "." И двойной оператор двоеточие "::"

Вы можете добавить имя модуля и подчеркивание, чтобы вызвать метод модуля перед именем метода. Вы можете использовать имя модуля и два двоеточия для ссылки на константу.

:: Является ли унарный оператор, позволяя константы, методы экземпляра и методы класса , определенные в классе или модуле , который можно получить в любом месте в классе или модуля с внешней стороны.

Помните: В Ruby, классы и методы могут быть также использованы в качестве константы.

Вам нужно всего лишь добавить перед именем константы выражения:: префикс, чтобы вернуться к соответствующему классу или модуля объекта.

Если выражение префикс не используется, класс мастер-объекта по умолчанию.

Вот два примера:

MR_COUNT = 0 # Класс объекта определяется в основных констант модуля Foo
  MR_COUNT = 0
  :: MR_COUNT = 1 #, чтобы установить глобальный счетчик 1
  MR_COUNT = 2 # установить локальный счетчик 2
конец
ставит MR_COUNT # Это глобальная константа ставит Foo :: MR_COUNT # Что такое "Foo" локальные константы 

Второй экземпляр:

CONST = 'там'
класс Inside_one
   CONST = Proc { 'там'}
   защиту where_is_my_CONST
      :: CONST + 'внутри одного'
   конец
конец
класс Inside_two
   CONST = 'внутри двух'
   защиту where_is_my_CONST
      CONST
   конец
конец
ставит Inside_one.new.where_is_my_CONST
ставит Inside_two.new.where_is_my_CONST
ставит Object :: CONST + Inside_two :: CONST
ставит Inside_two :: CONST + ФИКСИР
ставит Inside_one :: CONST
ставит Inside_one :: CONST.call + Inside_two :: CONST

Рубин оператор старшинство

В следующей таблице на основе приоритета оператора перечислены все операторы.

方法运算符描述
:: 常量解析运算符
[ ] [ ]= 元素引用、元素集合
** 指数
! ~ + - 非、补、一元加、一元减(最后两个的方法名为 +@ 和 -@)
* / % 乘法、除法、求模
+ - 加法和减法
>> << 位右移、位左移
& 位与
^ | 位异或、位或
<= < > >= 比较运算符
<=> == === != =~ !~ 相等和模式匹配运算符(!= 和 !~ 不能被定义为方法)
&& 逻辑与
|| 逻辑或
.. ... 范围(包含、不包含)
? : 三元 if-then-else
= %= { /= -= += |= &= >>= <<= *= &&= ||= **= 赋值
defined? 检查指定符号是否已定义
not 逻辑否定
or and 逻辑组成

Примечание: В столбце идентифицируется как метод оператора на самом деле метод, он может быть перегружена.