2011-11-12 2 views
3
a = [2,4,5] 
a.count-1 => 2 
a.count - 1 => 2 

그러나Ruby에서 공백에 대한 규칙은 무엇입니까?

a.count -1 => 0 

이 문제가 어떤 원인은? a가 정수가 아닌 배열 인 경우 왜 발생하지 않습니까?

또한 메서드 이름과 뒤에 오는 괄호 사이에 공백이 없어야한다는 것을 알았습니다 (매개 변수의 경우). 왜 그런가요?

루비 방법이 더 괄호로 호출 될 수 있기 때문에 1.9.2

답변

6

, 이는 :로

a.count -1 # is like a.count(-1) 

수단있어서 a.count 전화 반면

a.count - 1 

수단, a.count에서 1을 뺀다 -1을 인수로 사용하십시오. 정수에 count 메소드가 없기 때문에 a이 정수 일 때 발생하지 않습니다. 타이핑 할 때 조심해야합니다.

+2

'a.count -1'의 경우 '-'는 여전히 메소드입니다. 여기를 참조하십시오 : http://www.rubyinside.com/rubys-unary-operators-and-how-to-redefine-their-functionality-5610.html –

1
a.count - 1 # you are subtracting 
a.count -1 # you are doing a.count(-1) 

메서드 이름과 괄호 사이에는 공백을 넣을 수 있습니까? 방금 루비 1.9.2에서했는데 잘 작동합니다. 예를 들어

a.product([3]) 
a.product ([3]) 
1

a.count(-1)a.count -1는 동일하다.

-1이 배열에 포함 된 횟수를 반환합니다.

a = [-1, 3, 4] 
a.count -1 => 1