루비 연산자
루비는 사업자의 풍부한 세트를 지원합니다. 대부분의 사업자들은 실제로 메소드 호출이다. 예를 들어, 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 | 逻辑组成 |
참고 : 운영자 방법은 실제로 방법으로 열이식별되고,그것은 오버로드 할 수 있습니다.