Ruby-연산자
Ruby는 최신 언어에서 기대할 수있는 다양한 연산자를 지원합니다. 대부분의 연산자는 실제로 메서드 호출입니다. 예를 들어, a + b는 a. + (b)로 해석됩니다. 여기서 변수 a 가 참조하는 객체의 + 메서드는 b 를 인수로 사용하여 호출됩니다.
각 연산자 (+-* / % ** & | ^ << >> && ||)에는 해당 형식의 축약 된 할당 연산자 (+ =-= 등)가 있습니다.
루비 산술 연산자
변수 a가 10을 보유하고 변수 b가 20을 보유한다고 가정하면-
운영자 | 기술 | 예 |
---|---|---|
+ | 덧셈-연산자의 양쪽에 값을 추가합니다. | a + b는 30을 줄 것입니다 |
− | 빼기-왼손 피연산자에서 오른손 피연산자를 뺍니다. | a-b는 -10을 줄 것입니다. |
* | 곱하기-연산자의 양쪽에 값을 곱합니다. | a * b는 200을 줄 것입니다 |
/ | Division-왼손 피연산자를 오른손 피연산자로 나눕니다. | b / a는 2를 줄 것입니다 |
% | Modulus-왼손 피연산자를 오른손 피연산자로 나누고 나머지를 반환합니다. | b % a는 0을 제공합니다. |
** | 지수-연산자에 대한 지수 (승수) 계산을 수행합니다. | a ** b는 10의 제곱 20을 줄 것입니다. |
루비 비교 연산자
변수 a가 10을 보유하고 변수 b가 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? | 수신자와 인수의 유형과 값이 모두 같으면 참입니다. | 1 == 1.0은 true를 반환하지만 1.eql? (1.0)은 false입니다. |
같은? | 수신자와 인수의 개체 ID가 동일한 경우 참입니다. | aObj가 bObj의 중복 인 경우 aObj == bObj는 참이고, a.equal? bObj는 거짓이지만 a.equal? aObj는 참입니다. |
Ruby 할당 연산자
변수 a가 10을 보유하고 변수 b가 20을 보유한다고 가정하면-
운영자 | 기술 | 예 |
---|---|---|
= | 단순 할당 연산자, 오른쪽 피연산자의 값을 왼쪽 피연산자로 할당합니다. | c = a + b는 a + b의 값을 c에 할당합니다. |
+ = | AND 할당 연산자를 추가하고 오른쪽 피연산자를 왼쪽 피연산자에 추가하고 결과를 왼쪽 피연산자에 할당합니다. | c + = a는 c = c + a와 같습니다. |
-= | AND 할당 연산자 빼기, 왼쪽 피연산자에서 오른쪽 피연산자를 빼고 결과를 왼쪽 피연산자에 할당합니다. | c-= a는 c = c-a와 같습니다. |
* = | 곱하기 AND 할당 연산자, 오른쪽 피연산자와 왼쪽 피연산자를 곱하고 결과를 왼쪽 피연산자에 할당합니다. | c * = a는 c = c * a와 같습니다. |
/ = | AND 할당 연산자를 나누고 왼쪽 피연산자를 오른쪽 피연산자로 나누고 결과를 왼쪽 피연산자에 할당합니다. | c / = a는 c = c / a와 같습니다. |
% = | 모듈러스 AND 할당 연산자는 두 개의 피연산자를 사용하여 모듈러스를 취하고 그 결과를 왼쪽 피연산자에 할당합니다. | c % = a는 c = c % a와 같습니다. |
** = | 지수 AND 할당 연산자는 연산자에 대해 지수 (승수) 계산을 수행하고 값을 왼쪽 피연산자에 할당합니다. | 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
다음 Bitwise 연산자는 Ruby 언어에서 지원됩니다.
운영자 | 기술 | 예 |
---|---|---|
& | 이진 AND 연산자는 두 피연산자에 모두있는 경우 결과에 비트를 복사합니다. | (a & b)는 0000 1100 인 12를 제공합니다. |
| | 이진 OR 연산자는 피연산자 중 하나에 있으면 비트를 복사합니다. | (a | b)는 61, 즉 0011 1101을 제공합니다. |
^ | 이진 XOR 연산자는 하나의 피연산자에 설정된 경우 비트를 복사합니다. | (a ^ b)는 0011 0001 인 49를 제공합니다. |
~ | Binary Ones Complement Operator는 단항이며 비트를 '뒤집는'효과가 있습니다. | (~ a)는 부호있는 이진수로 인해 2의 보수 형식으로 1100 0011 인 -61을 제공합니다. |
<< | 이진 왼쪽 시프트 연산자. 왼쪽 피연산자 값은 오른쪽 피연산자에 지정된 비트 수만큼 왼쪽으로 이동합니다. | << 2는 240, 즉 1111 0000을 제공합니다. |
>> | 이진 오른쪽 시프트 연산자. 왼쪽 피연산자 값은 오른쪽 피연산자에 지정된 비트 수만큼 오른쪽으로 이동합니다. | a >> 2는 15, 즉 0000 1111을 제공합니다. |
Ruby 논리 연산자
다음 논리 연산자는 Ruby 언어에서 지원됩니다.
변수 a 가 10을 보유하고 변수 b 가 20을 보유 한다고 가정 하면-
운영자 | 기술 | 예 |
---|---|---|
과 | 논리 AND 연산자라고합니다. 두 피연산자가 모두 참이면 조건이 참이됩니다. | (a와 b)는 사실입니다. |
또는 | 논리 OR 연산자라고합니다. 두 피연산자 중 하나가 0이 아니면 조건이 참이됩니다. | (a 또는 b)가 참입니다. |
&& | 논리 AND 연산자라고합니다. 두 피연산자가 모두 0이 아니면 조건이 참이됩니다. | (a && b)는 참입니다. |
|| | 논리 OR 연산자라고합니다. 두 피연산자 중 하나가 0이 아니면 조건이 참이됩니다. | (a || b)는 사실입니다. |
! | 논리 NOT 연산자라고합니다. 피연산자의 논리 상태를 반전하는 데 사용합니다. 조건이 참이면 논리 NOT 연산자는 거짓으로 만듭니다. | ! (a && b)는 거짓입니다. |
아니 | 논리 NOT 연산자라고합니다. 피연산자의 논리 상태를 반전하는 데 사용합니다. 조건이 참이면 논리 NOT 연산자는 거짓으로 만듭니다. | not (a && b)는 거짓입니다. |
Ruby 삼항 연산자
Ternary Operator라는 연산자가 하나 더 있습니다. 먼저 표현식에서 참 또는 거짓 값을 평가 한 다음 평가 결과에 따라 주어진 두 명령문 중 하나를 실행합니다. 조건부 연산자는 다음 구문을 사용합니다.
운영자 | 기술 | 예 |
---|---|---|
? : | 조건식 | 조건이 참이면? 그런 다음 값 X : 그렇지 않으면 값 Y |
Ruby 범위 연산자
Ruby의 시퀀스 범위는 시작 값, 종료 값 및 그 사이의 값 범위로 구성된 연속 값 범위를 만드는 데 사용됩니다.
Ruby에서 이러한 시퀀스는 ".."및 "..."범위 연산자를 사용하여 생성됩니다. 점 2 개 형식은 포함 범위를 만들고 3 점 형식은 지정된 높은 값을 제외하는 범위를 만듭니다.
운영자 | 기술 | 예 |
---|---|---|
.. | 시작점에서 끝점까지의 범위를 만듭니다. | 1..10 1에서 10까지의 범위를 만듭니다. |
... | 시작점에서 끝점까지의 범위를 배타적으로 만듭니다. | 1 ... 10 1에서 9까지의 범위를 만듭니다. |
루비 정의? 연산자
한정된? 전달 된식이 정의되었는지 여부를 확인하기 위해 메서드 호출 형식을 취하는 특수 연산자입니다. 표현식의 설명 문자열을 반환하거나 표현식이 정의되지 않은 경우 nil을 반환합니다.
정의의 다양한 용도가 있습니까? 운영자
사용법 1
defined? variable # True if variable is initialized
For Example
foo = 42
defined? foo # => "local-variable"
defined? $_ # => "global-variable"
defined? bar # => nil (undefined)
사용법 2
defined? method_call # True if a method is defined
For Example
defined? puts # => "method"
defined? puts(bar) # => nil (bar is not defined here)
defined? unpack # => nil (not defined here)
사용법 3
# True if a method exists that can be called with super user
defined? super
For Example
defined? super # => "super" (if it can be called)
defined? super # => nil (if it cannot be)
사용법 4
defined? yield # True if a code block has been passed
For Example
defined? yield # => "yield" (if there is a block passed)
defined? yield # => nil (if there is no block)
Ruby Dot "." 및 이중 콜론 "::"연산자
이름 앞에 모듈의 이름과 마침표를 추가하여 모듈 메서드를 호출하고 모듈 이름과 두 개의 콜론을 사용하여 상수를 참조합니다.
그만큼 :: 클래스 또는 모듈 내에 정의 된 상수, 인스턴스 메서드 및 클래스 메서드를 클래스 또는 모듈 외부에서 액세스 할 수있는 단항 연산자입니다.
Remember 루비에서는 클래스와 메서드도 상수로 간주 될 수 있습니다.
접두사 만 있으면됩니다. :: 적절한 클래스 또는 모듈 개체를 반환하는식이있는 Const_name
접두사식이 사용되지 않으면 기본적으로 기본 Object 클래스가 사용됩니다.
다음은 두 가지 예입니다.
MR_COUNT = 0 # constant defined on main Object class
module Foo
MR_COUNT = 0
::MR_COUNT = 1 # set global count to 1
MR_COUNT = 2 # set local count to 2
end
puts MR_COUNT # this is the global constant
puts Foo::MR_COUNT # this is the local "Foo" constant
Second Example
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 연산자 우선 순위
다음 표에는 우선 순위가 가장 높은 것부터 가장 낮은 것까지 모든 연산자가 나열되어 있습니다.
방법 | 운영자 | 기술 |
---|---|---|
예 | :: | 일정한 해상도 연산자 |
예 | [] [] = | 요소 참조, 요소 세트 |
예 | ** | 지수 (제곱으로 올림) |
예 | ! ~ +- | Not, 보완, 단항 더하기 및 빼기 (마지막 두 메서드 이름은 + @ 및-@ 임) |
예 | * / % | 곱하기, 나누기 및 모듈로 |
예 | +- | 더하기와 빼기 |
예 | >> << | 오른쪽 및 왼쪽 비트 시프트 |
예 | & | 비트 'AND' |
예 | ^ | | 비트 배타적`OR '및 일반`OR' |
예 | <= <>> = | 비교 연산자 |
예 | <=> == ===! = = ~! ~ | 같음 및 패턴 일치 연산자 (! = 및! ~는 메서드로 정의되지 않을 수 있음) |
&& | 논리적 'AND' | |
|| | 논리 'OR' | |
.. ... | 범위 (포함 및 제외) | |
? : | 삼항 if-then-else | |
= % = {/ =-= + = | = & = >> = << = * = && = || = ** = | 할당 | |
한정된? | 지정된 기호가 정의되었는지 확인 | |
아니 | 논리적 부정 | |
또는 | 논리적 구성 |
NOTE− 방법 열에 Yes 가있는 연산자 는 실제로는 방법이므로 재정의 될 수 있습니다.