Latest web development tutorials

루비 연산자

루비는 사업자의 풍부한 세트를 지원합니다. 대부분의 사업자들은 실제로 메소드 호출이다. 예를 들어, A + B는로 해석된다. + (B)에서, 변수 A + B가 가리키는 방법에있어서, 호출의 매개 변수로서 호출된다.

각 연산자 (+ - * / % ** | ^ << >> && ||) (- = 등 + =), 해당 약어 할당 연산자가 있습니다.

루비 산술 연산자

변수를 다음 값 10, 20의 변수 B의 값을 가정한다 :

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

루비 비교

변수를 다음 값 10, 20의 변수 B의 값을 가정한다 :

运算符描述实例
==检查两个操作数的值是否相等,如果相等则条件为真。 (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의 변수 B의 값을 가정한다 :

运算符描述实例
=简单的赋值运算符,把右操作数的值赋给左操作数 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

루비 병렬 할당

루비는 병렬 할당 변수를 지원합니다. 이것은 여러 변수가 루비 코드의 라인으로 초기화 할 수 있습니다. 예를 들면 :

A = 10
B = 20
C = 30

빠른 면책 조항 병렬 할당을 사용 :

A, B, C = 10, 20, 30

두 변수의 값들을 교환하는 병렬 할당은 또한 유용하다 :

A, B = B, C

루비 비트 연산자

비트 비트에 작용하는 연산자 및 비트 연산에 의해 비트.

A = 60라고 가정하고, 경우 B = 13 일 현재 다음과 바이너리 형식에서 :

A = 0011 1100

B = 0000 1101

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

A와 B = 0000 1100

A | B = 0011 1101

^ B = 0011 0001

~ A = 1100 0011

다음 표는 루비가 비트 연산자를 지원 보여줍니다.

운영자 기술
모두 두 개의 피연산자에있는 경우, 이진 AND 연산자는 결과를 복사합니다. 12됩니다 (A & B)는, 즉, 0000 1100
| 피연산자에 존재하는 경우, 이진 OR 연산자는 결과를 복사합니다. (A는 | b)는 61 될 것 00111101입니다
^ 피연산자 중 하나에 존재할 수 있지만 동시에 두 개의 피연산자 이진 XOR 연산자의 결과에 복사본이 존재하는 경우. 49이됩니다 (A ^ B)는 00110001입니다
~ 조로 보수 연산자는 단항 연산자는 "플립"위치 효과입니다. (~ A) 1100 0011,2 기호와 진수의 형태를 보완하며, -61됩니다.
<< 이진 왼쪽 시프트 연산자. 왼쪽 피연산자의 값은 숫자의 지정된 번호를 왼쪽과 오른쪽 피연산자 이동합니다. << 2는 240이됩니다, 즉 11110000입니다
>> 이진 오른쪽 시프트 연산자입니다. 왼쪽 피연산자의 값이 오른쪽으로 오른쪽 피연산자를 지정된 비트 수를 이동합니다. >> 2가 15이 될 것이다, 즉, 0000 1111입니다

루비 논리 연산자

다음 표는 루비 논리 연산자를 지원 보여줍니다.

변수를 다음 값 10, 20의 변수 B의 값을 가정한다 :

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

루비 삼항 연산자

삼원 운영자라고 하나 이상의 액션이있다. 다음, 제 1 컴퓨팅 진실 식의 값 및 결과에 기초하여 문장 뒤에 두 구현하기로 결정했다. 조건 연산자의 구문은 다음과 같습니다

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

루비 범위 연산자

루비에, 순서는 연속적인 범위 값의 시리즈를 만드는 데 사용됩니다 - 값, 그들 사이의 종료 값 (이용 가능 여부에 따른)와 값을 시작 포함되어 있습니다.

루비, 이러한 시퀀스 작성 ".."및 "..."범위 오퍼레이터를 사용한다. 범위는 두 가지 형태는 시작 값 종료 값이 포함되어 있지 않습니다 포함 된 양식을 만들려면 세의 범위를 시작 및 종료 값을 만들 포함되어 있습니다.

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

루비 정의? 운영자

정의? 정의의 판단 식을 전달하는 메소드 호출의 형태인지, 특별한 연산자입니다. 표현식이 정의되지 않은 반환전무의경우는, 설명 문자열 표현을반환합니다.

다음은 사용 정의 된 다양한 연산자이다?

구문 1

정의? 변수 # 변수가 True로 초기화 된 경우,

예를 들면 :

foo는 = (42)
정의? foo는 # => "지역 변수"
정의? $ _ # => "글로벌 변수"
정의? 바 # => 전무 (정의)

구문 2

정의? method_call 번호 방법은, 진정한 정의 된 경우

예를 들면 :

정의? # => "방법"을두고
정의? 풋 (바) # => 전무 (여기 바 미정)
정의? 압축을 풀고 # => 전무 (여기에 정의되지 않은)

구문 3

# 방법이 수퍼 유저로 호출 할 수있는 경우는, 진정한 존재
정의? 슈퍼

예를 들면 :

정의? 슈퍼 # => "슈퍼"(호출 할 수있는 경우)
정의? 슈퍼 # => 전무 (호출되지 않은 경우)

사용 4

정의? 코드 블록이 True 통과하면 #를 얻을,

예를 들면 :

정의? 항복 # => "수율"(경우 전송 블록)
정의? (블록을 ​​통과하지 않은 경우) # => 전무를 얻을 수

루비 도트 연산자 "."그리고 이중 콜론 연산자 "::"

모듈 이름을 추가하고, 메소드 명 전에 모듈 메서드를 호출 강조 할 수있다. 넌 상수를 참조 모듈 이름 및 두 개의 콜론을 사용할 수있다.

:: 외부로부터 클래스 또는 모듈 어딘가에 액세스 할 수있는 클래스 또는 모듈 내에 정의 된 상수, 인스턴스 메소드와 클래스 메소드 허용 단항 연산자이다.

기억 루비 클래스 및 메소드는 상수로 이용 될 수있다.

당신은 적절한 클래스 또는 모듈 객체로 돌아가려면, 상수 표현:: 접두사의 이름 앞에 추가해야합니다.

접두사 식을 사용하지 않으면, 디폴트 마스터 객체 클래스.

여기에 두 가지 예는 다음과 같습니다

MR_COUNT = 0 # 개체 클래스는 기본 상수 모듈 푸에 정의
  MR_COUNT = 0
  :: MR_COUNT = 1 # 글로벌 카운트 1을 설정합니다
  MR_COUNT = 2 # 2의 로컬 수를 설정
끝
이 글로벌 상수 "푸"지역 상수 무엇 푸 :: MR_COUNT 번호를두고있다 MR_COUNT 번호를 넣습니다 

두 번째 인스턴스 :

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는두고
개체 : CONST + Inside_two는두고 :: CONST를
Inside_two : CONST + CONST는두고
Inside_one : CONST을두고
Inside_one :: CONST.call + Inside_two는두고 :: CONST를

루비의 연산자 우선 순위

우선 순위 연산자를 바탕으로 다음 표는 모든 운영자를 나열합니다.

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

참고 : 운영자 방법은 실제로 방법으로 열이식별되고,그것은 오버로드 할 수 있습니다.