루비 연산자
Ruby는 다양한 연산자를 지원합니다. 대부분의 연산자는 실제로 메서드 호출입니다. 예를 들어, a + b는 a.+(b)로 해석됩니다. 여기서 변수 a를 가리키는 + 메서드는 b를 메서드 호출에 대한 인수로 사용하여 호출됩니다.
각 연산자(+ - * / % ** & | ^ << >> && ||)에 해당하는 약식 할당 연산자(+= -= 등)가 있습니다.
Ruby 산술 연산자
변수 a의 값이 10이고 변수 b의 값이 20이라고 가정하고,
Operator | Description | Example |
---|---|---|
+ | Add ition - 작업 추가 기호 양쪽에 있는 피연산자 | a + b는 30 |
- | 빼기 - 오른쪽 피연산자에서 왼쪽 피연산자를 빼면 | a - b는 -10 |
* | 곱셈을 얻습니다. - 연산자의 양쪽 피연산자를 곱합니다. | a * b는 200 |
/ | 을 얻습니다. 나눗셈 - 왼쪽 피연산자를 오른쪽 피연산자로 나눕니다. | b / a는 2 |
% | 을 얻습니다. 모듈로 - 왼쪽 피연산자를 오른쪽 피연산자로 나누고 나머지를 반환합니다. | b % a는 0 |
** | ExComponent를 얻습니다. 지수 계산을 수행합니다. | a**b는 10의 20제곱을 얻습니다. |
Ruby 비교 연산자
변수 a의 값이 10이고 변수 b의 값이 20이라고 가정하면 다음과 같습니다.
Operator | Description | Example |
---|---|---|
== | 두 연산을 확인하세요. 숫자의 값이 동일하면 조건이 true입니다. | (a == b)는 사실이 아닙니다. |
!= | 두 피연산자의 값이 같은지 확인하고, 그렇지 않으면 조건이 true인지 확인합니다. | (a != b)는 사실입니다. |
> | 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 큰지 확인하고, 그렇다면 조건이 true입니다. | (a > b)는 사실이 아닙니다. |
< | 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 작은지 확인하고, 그렇다면 조건은 true입니다. | (a < b)는 참입니다. |
>= | 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 크거나 같은지 확인하고, 그렇다면 조건이 true입니다. | (a >= b)는 사실이 아닙니다. |
<= | 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 작거나 같은지 확인하고, 그렇다면 조건이 true입니다. | (a <= b)는 사실입니다. |
<=> | Union 비교 연산자. 첫 번째 피연산자가 두 번째 피연산자와 같으면 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를 반환합니다. |
Ruby 할당 연산자
변수 a의 값이 10이고 변수 b의 값이 20이라고 가정하면 다음과 같습니다.
Operator | Description | Example |
---|---|---|
= | 단순 할당 연산자 , 할당 오른쪽 피연산자의 값을 왼쪽 피연산자에 | 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 |
Ruby 병렬 할당
Ruby는 변수 병렬 할당도 지원합니다. 이를 통해 한 줄의 Ruby 코드로 여러 변수를 초기화할 수 있습니다. 예:
a = 10 b = 20 c = 30
더 빠르게 선언하려면 병렬 할당을 사용하세요.
a, b, c = 10, 20, 30
병렬 할당은 두 변수의 값을 교환할 때도 유용합니다.
a, b = b, c
Ruby 비트 연산자
비트 연산자는 비트 단위로 작동합니다. 작업 수행 .
a = 60이고 b = 13이라고 가정하면 이제 이진 형식으로 다음과 같습니다.
a = 0011 1100
b = 0000 1101
------------- ----
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
다음 표에는 Ruby에서 지원하는 비트 연산자가 나열되어 있습니다.
Operator | Description | Example |
---|---|---|
& | 이진 AND 연산자는 두 피연산자 모두에 있는 경우 결과에 1비트를 복사합니다. | (a & b)는 12, 즉 0000 1100을 제공합니다. |
| | 두 피연산자 모두에 있는 경우 이진 OR 연산자는 결과에 1비트를 복사합니다. | (a | b)는 0011 1101인 61을 얻습니다. |
^ | 피연산자 중 하나에만 있고 둘 다에는 없으면 이진 XOR 연산자는 결과가 진행 중입니다. | (a ^ b)는 49, 즉 0011 0001 |
~ | 2의 보수 연산자는 비트를 "뒤집는" 효과가 있는 단항 연산자입니다. | (~a )는 -61, 즉 1100 0011, 2의 보수, 부호 있는 이진수를 제공합니다. |
<< | 이진 왼쪽 시프트 연산자. 왼쪽 피연산자의 값은 오른쪽 피연산자가 지정한 비트 수만큼 왼쪽으로 이동합니다. | a << 2는 240을 얻으며 이는 1111 0000 |
> | 이진 오른쪽 시프트 연산자입니다. 왼쪽 피연산자의 값은 오른쪽 피연산자가 지정한 비트 수만큼 오른쪽으로 이동합니다. | a >> 2는 15를 얻게 되며 이는 0000 1111 |
Ruby 논리 연산자
다음 표에는 Ruby에서 지원하는 논리 연산자가 나열되어 있습니다.
변수 a의 값이 10이고 변수 b의 값이 20이라고 가정하면 다음과 같습니다.
Operator | Description | Example |
---|---|---|
and | 을 논리 AND 연산자라고 합니다. 두 피연산자가 모두 true이면 조건은 true입니다. | (a와 b)는 사실입니다. |
or | 을 논리 OR 연산자라고 합니다. 두 피연산자 중 하나라도 0이 아니면 조건은 참입니다. | (a 또는 b)는 사실입니다. |
&& | 을 논리 AND 연산자라고 합니다. 두 피연산자가 모두 0이 아니면 조건은 참입니다. | (a && b)는 사실입니다. |
|| | 을 논리 OR 연산자라고 합니다. 두 피연산자 중 하나라도 0이 아니면 조건은 참입니다. | (a || b)는 사실입니다. |
! | 을 논리 NOT 연산자라고 합니다. 피연산자의 논리적 상태를 반전시키는 데 사용됩니다. 논리 NOT 연산자는 조건이 참인 경우 거짓으로 만듭니다. | !(a && b)는 거짓입니다. |
not | 을 논리 NOT 연산자라고 합니다. 피연산자의 논리적 상태를 반전시키는 데 사용됩니다. 논리 NOT 연산자는 조건이 참인 경우 거짓으로 만듭니다. | not(a && b)는 거짓입니다. |
Ruby 삼항 연산자
삼항 연산자라는 연산이 두 개 이상 있습니다. 첫 번째는 표현식의 참 또는 거짓 값을 계산한 후 이 결과를 기반으로 다음 두 문 중 하나를 실행하기로 결정합니다. 조건 연산자의 구문은 다음과 같습니다.
Operator | Description | Instance |
---|---|---|
? : | 조건식 | 조건이 true이면 값은 X입니다. 그렇지 않으면 값은 다음과 같습니다. Y |
Ruby 범위 연산자
Ruby에서 시퀀스 범위는 시작 값, 끝 값(적절한 경우) 및 그 사이의 값을 포함하여 일련의 연속 값을 만드는 데 사용됩니다.
Ruby에서 이러한 시퀀스는 ".." 및 "..." 범위 연산자를 사용하여 생성됩니다. 2점 형식으로 생성된 범위에는 시작 값과 끝 값이 포함되며, 3점 형식으로 생성된 범위에는 시작 값만 포함되고 끝 값은 포함되지 않습니다.
Operator | Description | Instance |
---|---|---|
.. | 시작점부터 끝점까지의 범위를 만듭니다(끝점 포함) | 1..10 1부터 10까지의 범위 만들기 |
... | 시작점부터 끝점까지 범위 생성(종료점 제외) | 1...10 1부터 9까지의 범위 생성 |
Ruby 정의? 연산자
defined?는 전달된 표현식이 메서드 호출 형식으로 정의되었는지 여부를 결정하는 특수 연산자입니다. 표현식을 설명하는 문자열을 반환하거나 표현식이 정의되지 않은 경우 nil을 반환합니다.
다음은 정의된? 연산자의 다양한 사용법입니다.
Usage 1
defined? variable # 如果 variable 已经初始化,则为 True
예:
foo = 42 defined? foo # => "local-variable" defined? $_ # => "global-variable" defined? bar # => nil(未定义)
Usage 2
defined? method_call # 如果方法已经定义,则为 True
예:
defined? puts # => "method" defined? puts(bar) # => nil(在这里 bar 未定义) defined? unpack # => nil(在这里未定义)
Usage 3
# 如果存在可被 super 用户调用的方法,则为 True defined? super
예:
defined? super # => "super"(如果可被调用) defined? super # => nil(如果不可被调用)
사용법 4
defined? yield # 如果已传递代码块,则为 True
예:
defined? yield # => "yield"(如果已传递块) defined? yield # => nil(如果未传递块)
Ruby 도트 연산자 "." 및 이중 콜론 연산자 "::"
메서드 이름 앞에 모듈 이름과 밑줄을 추가하여 모듈 메서드를 호출할 수 있습니다. 모듈 이름과 두 개의 콜론을 사용하여 상수를 참조할 수 있습니다.
::는 상수, 인스턴스 메서드 및 클래스 메서드를 클래스나 모듈 내에서 정의하고 클래스나 모듈 외부 어디에서나 액세스할 수 있도록 하는 단항 연산자입니다.
기억하세요: Ruby에서는 클래스와 메서드도 상수로 처리될 수 있습니다.
적절한 클래스 또는 모듈 객체를 반환하려면 표현식의 상수 이름 앞에 ::를 붙이기만 하면 됩니다.
접두사 표현식을 사용하지 않으면 기본적으로 기본 Object 클래스가 사용됩니다.
다음은 두 가지 예입니다.
MR_COUNT = 0 # 定义在主 Object 类上的常量 module Foo MR_COUNT = 0 ::MR_COUNT = 1 # 设置全局计数为 1 MR_COUNT = 2 # 设置局部计数为 2 end puts MR_COUNT # 这是全局常量 puts Foo::MR_COUNT # 这是 "Foo" 的局部常量
두 번째 예:
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
Ruby 연산자의 우선순위
다음 표에는 우선 순위에 따라 모든 연산자가 높은 것부터 낮은 것 순으로 나열되어 있습니다.
메서드 | 연산자 | 설명 |
---|---|---|
은 | :: | 상수 구문 분석 연산자 |
은 | [ ] [ ] = | 요소 참조, 요소 컬렉션 |
is | ** | exComponent |
is | ! ~ + - | non, 보수, 1달러 더하기, 1달러 빼기(마지막 두 가지 방법의 이름은 +@ 및 -@입니다) |
예 | * / % | 곱하기, 나누기, 모듈러스 |
는 | + - | 덧셈과 뺄셈 |
은 | >> Shift | |
& | 비트별 및 | |
^ | | 비트 XOR, 비트 OR | |
< > >= | 연산자 비교 | |
동등 및 패턴 일치 연산자(!= 및 !~는 메소드로 정의할 수 없음) | + | |
? : | ternary if-then-else||
= %= { /= -= += |= &= >>= <<= *= &&= ||= **= | Assignment||
정의되었나요? | 지정된 기호가 정의되어 있는지 확인하세요||
not | 논리적 부정||
또는 | 논리적 구성