1

루비에서 두 개의 숫자를 추가 할 때 '+'메소드가 다음 객체로 매개 변수가있는 현재 객체에 호출됩니다.루비에서 연산자를 사용할 때 어떤 일이 일어나는가

>> 2 + 3 
=> 5 



>> 2.+(3) 
=> 5 

도트 연산자가없는 객체에서 메소드를 호출 할 수있는 방법은 무엇입니까? 첫 번째 예에서는 어떻게됩니까? 그럴 경우 '+'메서드에서 호출되는 메서드 메서드가 될 수 있습니까? (심지어 말이 안된다.)

답변

4

Ruby는 언어의 문법이 이렇게 말하기 때문에 +이 연산자라는 것을 알고있다. 또한 단 하나의 + 연산자 (즉, [email protected] method으로 변환 됨)가 있으며 언어의 문법을 통해 루비는 어느 것을 알 수 있습니다. 언어 정의에 따르면 연산자는 메서드 호출로 구현되며 각 연산자가 매핑되는 메서드를 지정합니다.

o.m am 메서드에 대한 호출을 o이고 a을 인수로 묻는 것과 같습니다. Ruby의 구문과 의미가 정의 된 것입니다.

연산자는 이론적 인 수학에서도 함수입니다. a + b 표기 정말 단지 편리한 표기법 +(a, b) (여기서 + : R2R 또는 예를 들어 RR × R에서 함수). 난 당신이 너무 많은 표기법을 읽고 연산자가 뭔가 특별하다고 생각하고, 그렇지 않아, 그들은 단지 컴퓨터 언어와 수학에서 함수 호출 일 뿐이라고 생각합니다.

요약하면 Ruby가 작동하도록 정의 되었기 때문에 작동합니다.

는 지금까지

같은 방법 방법은 '+'방식에 3 호출 할 수 있을까? 우려

3는 Fixnum이라는 객체 2+ 방법에 인수 또는 파라미터이다.

1

a + b는. + (b)에 대한 설탕 구문입니다. 루비에서는 거의 모든 것이 하나의 객체이며, 심지어 '연산자'도 실제로 숫자의 메소드입니다. 설탕 구문보다 더 이상 마술이 아닙니다.

관련 문제