2015-01-25 1 views

답변

4

:+은 기호입니다.

당신은 IRB에서 볼 수 있습니다

이러한 맥락에서
> :+.class 
=> Symbol 

, 그것은 실제로 inject로 대신 블록으로 호출 될 + 방법을 나타냅니다. 에 해당합니다

> 5.send(:+, 3) 
=> 8 

:

> 5 + 3 
=> 8 
+0

대단히 감사합니다. 그래서 ":"로 시작하는 것은 상징입니다. 그래서 저는 루비에서 연산자를 함수/메소드에 대한 인수로 전달할 수 없다는 것을 알고 있습니다. 이것이 임시 해결 방법 인 것처럼 보이지만, 맞습니까? –

+0

@ user3827668, 어떤 메소드도 인수로 전달할 수 없습니다. 왜? 루비에서는 dostuff와 같은 메소드 이름을 작성할 때 루비가 메소드를 실행하기 때문에 - 괄호는 선택 사항입니다. 따라서 메서드 이름을 작성할 때마다 루비가 메서드를 실행하므로 메서드 자체를 전달할 수 없습니다. 따라서 메서드 이름 인 문자열 ("do_stuff")이나 기호 (이제는 문자열 : dostuff와 동일하다고 가정 할 수 있음)를 전달한 다음 문자열을 사용하여 메서드를 실행해야합니다. – 7stud

+0

그래서 "+"는 연산자가 아니라 오히려 방법입니까? –

관련 문제