English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby 연산자

Ruby는 다양한 연산자를 지원합니다. 대부분의 연산자는 메서드 호출입니다. 예를 들어, a + b는 a로 해석됩니다.+(b)에서는 변수 a를 가리킵니다. + 메서드가 호출되고, b가 메서드 호출의 파라미터로 사용됩니다.

각 연산자에 대해(+ - * / % ** & | ^ << >> && ||)에 대해 모두 해당 축약형 할당 연산자가 있습니다.+= -= 등).

Ruby 수학 연산자

변수 a의 값은 다음과 같습니다: 10변수 b의 값은 다음과 같습니다: 20이면 다음과 같습니다:

연산자설명예제
+더하기 - 연산자 양쪽의 연산자를 더합니다a + b는 30
-빼기 - 왼쪽 연산자를 오른쪽 연산자에서 뺍니다a - b는 -10
*곱셈 - 연산자 양쪽의 연산자를 곱합니다a * b는 200
/나눗셈 - 왼쪽 연산자를 오른쪽 연산자로 나눕니다b / a는 2
%모듈러 - 왼쪽 연산자를 오른쪽 연산자로 나누고 나머지를 반환합니다b % a는 0을 반환합니다
**지수 - 지수 계산을 수행합니다a**b는 10 의 20승

Ruby 비교 연산자

변수 a의 값은 다음과 같습니다: 10변수 b의 값은 다음과 같습니다: 20이면 다음과 같습니다:

연산자설명예제
==두 연산자의 값이 같으면 조건이 참입니다(a == b)이 참이 아닙니다.
!=두 연산자의 값이 같지 않으면 조건이 참입니다(a != b)이 참입니다.
>왼쪽 연산자의 값이 오른쪽 연산자의 값보다 크면 조건이 참입니다(a > b)이 참이 아닙니다.
<왼쪽 연산자의 값이 오른쪽 연산자의 값보다 작으면 조건이 참입니다(a < b)이 참입니다.
>=왼쪽 연산자의 값이 오른쪽 연산자의 값보다 크거나 같으면 조건이 참입니다(a >= b)이 참이 아닙니다.
<=왼쪽 연산자의 값이 오른쪽 연산자의 값보다 작거나 같으면 조건이 참입니다(a <= b)이 참입니다.
<=>합성 비교 연산자. 첫 번째 연산자가 두 번째 연산자와 같으면 0을 반환하며 첫 번째 연산자가 두 번째 연산자보다 크면 1، 첫 번째 연산자가 두 번째 연산자보다 작으면 0을 반환합니다 -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이면 다음과 같습니다:

연산자설명예제
=간단한 할당 연산자는 오른쪽 연산자의 값을 왼쪽 연산자에 할당합니다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가 지원하는 비트 연산자를 나열합니다.

연산자설명예제
&두 연산자 모두에 존재하는 경우, 이진 AND 연산자는 결과에 한 비트를 복사합니다.(a & b)은 다음과 같이 됩니다: 120000로 되어 있습니다. 1100
|어떤 연산자에도 존재하는 경우, 이진 OR 연산자는 결과에 한 비트를 복사합니다.(a | b)은 다음과 같이 됩니다: 6100으로 되어 있습니다.11 1101
^하나의 연산자에만 존재하지만 두 연산자 모두에 존재하지 않는 경우, 이진 XOR 연산자는 결과에 한 비트를 복사합니다.(a ^ b)은 다음과 같이 됩니다: 4900으로 되어 있습니다.11 0001
~이진 보수 연산자는 일원 연산자로, "전환" 비트 효과를 가지며 0은 1로, 1은 0으로 됩니다.1,10으로 됩니다.(~a)은 다음과 같이 됩니다: -610000로 되어 있습니다. 1100 0011부호화된 이진수의 보수 형식입니다.
<<이진 왼쪽 이동 연산자입니다. 왼쪽 연산자의 값을 왼쪽 연산자가 지정한 비트수만큼 왼쪽으로 이동합니다.a << 2 다음과 같이 됩니다: 240으로 되어 있습니다. 1111 0000
>>이진 오른쪽 이동 연산자입니다. 왼쪽 연산자의 값을 오른쪽 연산자가 지정한 비트수만큼 오른쪽으로 이동합니다.a >> 2 다음과 같이 됩니다: 150000로 되어 있습니다. 1111

Ruby 논리 연산자

다음 표는 Ruby가 지원하는 논리 연산자를 나열합니다.

변수 a의 값은 다음과 같습니다: 10변수 b의 값은 다음과 같습니다: 20이면 다음과 같습니다:

연산자설명예제
and명명된 논리과 연산자입니다. 두 연산자 모두 참이면 조건이 참으로 됩니다.(a and b) 가 참입니다.
or명명된 논리 또 연산자입니다. 두 연산자 중 하나라도 0이 아니면 조건이 참으로 됩니다.(a or b) 가 참입니다.
&&명명된 논리과 연산자입니다. 두 연산자 모두 0이 아니면 조건이 참으로 됩니다.(a && b) 가 참입니다.
||명명된 논리 또 연산자입니다. 두 연산자 중 하나라도 0이 아니면 조건이 참으로 됩니다.(a || b) 가 참입니다.
!명명된 논리 비 연산자입니다. 연산자의 논리 상태를 반전합니다. 조건이 참이면 논리 비 연산자는 거짓으로 만듭니다.!(a && b) 가 거짓입니다.
not명명된 논리 비 연산자입니다. 연산자의 논리 상태를 반전합니다. 조건이 참이면 논리 비 연산자는 거짓으로 만듭니다.not(a && b)는 거짓입니다。

Ruby 삼원 연산자

두 개 이상의 연산이 하나의 연산자로 합쳐지는 경우가 있습니다. 첫 번째 연산은 표현식의 진위 값을 계산하고, 그 결과에 따라 두 번째 두 개의 문장 중 하나를 실행합니다. 조건 연산자의 문법은 다음과 같습니다:

연산자설명예제
? :조건 표현식조건이 참이면 ? X의 값을, 아니면 Y의 값을 반환합니다

Ruby 범위 연산자

Ruby에서 시퀀스 범위는 연속적인 값의 일렬을 생성하는 데 사용됩니다 - 시작 값, 종료 값( 필요에 따라) 그리고 그들 사이의 값이 포함됩니다.

Ruby에서 이러한 시퀀스는 ".."와 "..." 범위 연산자를 사용하여 생성됩니다. 두 점 형식으로 생성된 범위는 시작 값과 종료 값을 포함하며, 세 점 형식으로 생성된 범위는 시작 값만 포함하고 종료 값을 포함하지 않습니다.

연산자설명예제
..시작점에서 종료점까지의 범위를 생성합니다(종료점은 포함합니다)1..10 생성한 1 부터 10 의 범위
...시작점에서 종료점까지의 범위를 생성합니다(종료점은 포함하지 않습니다)1...10 생성한 1 부터 9 의 범위

Ruby defined? 연산자

defined?는 특별한 연산자로서, 전달된 표현식이 정의되었는지 여부를 메서드 호출 형식으로�断합니다. 표현식이 정의되지 않았으면, 그 표현식의 설명 문자열을 반환합니다. nil.

다음은 defined? 연산자의 다양한 사용법입니다:

사용법 1

defined? variable # 如果 variable 已经初始化,则为 True

예를 들어:

foo = 42
defined? foo # => "local"-variable"
defined? $_ # => "global"-variable"
defined? bar # => nil(未定义)

사용법 2

defined? method_call # 如果方法已经定义,则为 True

예를 들어:

defined? puts # => "method"
defined? puts(bar) # => nil(在这里 bar 未定义)
defined? unpack # => nil(在这里未定义)

사용법 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 연산자의 우선순위

다음 표는 연산자의 우선순위를 높은 순서로 낮은 순서로 나열했습니다.

메서드연산자설명
::불변 해석 연산자
[ ] [ ]=요소 참조, 요소 집합
**지수
! ~ + -부정, 보상, 일원 덧셈, 일원 뺄셈(최종 두 개의 메서드 이름은 +@과 -@)
* / %곱셈, 나눗셈, 나머지
+ -덧셈과 뺄셈
>> <<비트 오른쪽 이동, 비트 왼쪽 이동
&비트 AND
^ |비트 이소각, 비트 또는
<= < > >=비교 연산자
<=> == === != =~ !~상응 및 패턴 매칭 연산자(!=와!~는 메서드로 정의할 수 없음)

&&논리 및

||논리 또는

.. ...범위(포함, 포함하지 않음)

? :삼항 if-then-else

= %= { /= -= += |= &= >>= <<= *= &&= ||= **=할당

defined?지정된 기호가 정의되었는지 확인

not논리 부정

or and논리 구성

주의:메서드 목록에 표시된 의 연산자는 실제 메서드이므로 재정의될 수 있습니다.