2011-03-03 3 views
1

Ruby/Rails에 익숙해지기 시작했지만 익숙하지 않은 경우 block을 볼 때 여전히 묻습니다.기본 Ruby/Rails 블록 및 블록 변수 이해에 대한 질문

(5..10).reduce(0) do |sum, value| 
    sum + value 
end 

가 나는 그것이 무엇을 알고 ...하지만, 어떻게 하나가 루비의 블록으로 전달 된 매개 변수의 순서를 알 수 있습니까 : 다음 코드를 가지고? 그들은 순서대로 가지고 간다? 어떻게 을 신속하게 그들이 무엇을 나타내는 지 알고 계십니까?

저는 소스 (또는 문서)에서 무엇이 산출되는지 알아 내야한다고 가정합니다 ... 바로 가기가 있습니까? 나는 어떻게 오래 된 수의사가 인지 신속하게 궁금합니다. 블록이 무엇을하고 있는지 분별할 수 있습니까? 어떻게 블록을 보거나 해석하는 방법에 접근해야합니까?

답변

1

코드를 작성하면 문서를 검사하는 것 외에 다른 방법이 없습니다. Ruby가 이런 종류의 일에 일관되고 일관성이 있더라도 특정 방법으로 작업하기를 기대하기 쉽습니다. 반면에 코드를 읽을 때 코더가 똑똑하고 일관성있는 변수 이름을 사용할 수 있기를 바랍니다. 귀하의 예를

(5..10).reduce(0) do |sum, value| 
    sum + value 
end 

에서 변수가 sumvalue라고하면 이유가있다! :-) 이와 비슷한 것

(5..10).reduce(0) {|i,j|i+j} 

물론 동일하지만 훨씬 덜 읽을 수 있습니다. 따라서 교훈은 다음과 같습니다. 올바른 코드를 작성하면 컴퓨터에 지침을 제공하는 것보다 더 많은 정보를 전달할 수 있습니다!

2

암기 될 때까지 문서에서 찾아보기 만하면됩니다. 나는 아직도 reduce와 다른 두 사람과 문제가 있습니다. 이것은 일반적인 방법에 대한 인수 순서를 기억하는 것과 같습니다. 프로그래머는 거의 모든 언어로이 문제를 처리해야합니다.