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 가있는 연산자 는 실제로는 방법이므로 재정의 될 수 있습니다.