Ruby에서 블록에 대한 선택 do end
과 선택을위한 두 가지 일반적인 스타일이 있습니다 { }
.
첫 번째이자 매우 일반적인 스타일은 Ruby on Rails에 의해 대중화되었으며 단일 대 다중 라인의 간단한 규칙을 기반으로합니다.
{ }
한 줄 블록에 중괄호 사용
- 사용
do end
멀티 라인 블록
DO / 끝 닫는 떠나, 한 - 라이너에 심하게 읽지 만 여러 줄의 블록 때문에 의미가 있습니다 }
자신의 줄에 매달려 다른 모든 것을 그 용도와 일관성이 end
같은 모듈, 클래스 및 메소드 정의로 루비 ( def
등 .) 및 제어 구조 ( if
, while
,case
등)
두 번째로 덜 자주 사용되는 스타일은 시맨틱 (Semantic) 또는 " Weirich Braces " 로 알려져 있으며 고인이 된 위대한 루비 이스트 Jim Weirich가 제안했습니다.
- 사용하다
do end
절차 블록
{ }
기능 블록에 중괄호 사용
즉, 블록이 반환 값에 대해 평가 될 때 체인이 가능해야하며{}
중괄호가 메서드 체인에 더 적합합니다.
반면에 블록이 부작용에 대해 평가 될 때 되면 반환 값은 중요하지 않으며 블록은 단지 무언가를 "실행"하기 때문에 연결하는 것이 의미가 없습니다.
구문에서 이러한 구분은 블록 평가에 대한 시각적 의미와 반환 값에 대해 신경을 써야하는지 여부를 전달합니다.
예를 들어, 여기에서 블록의 반환 값은 모든 항목에 적용됩니다.
items.map { |i| i.upcase }
그러나 여기서는 블록의 반환 값을 사용하지 않습니다. 그것은 절차 적으로 운영하고 있어요 하고 그것으로 부작용을 :
items.each do |item|
puts item
end
시맨틱 스타일의 또 다른 이점은 블록에 줄이 추가 되었기 때문에 수행 / 종료하기 위해 중괄호를 변경할 필요가 없다는 것입니다.
관찰하자면 우연히 기능 블록은 종종 한 줄이며 절차 적 블록 (예 : 구성)은 여러 줄입니다. 따라서 Weirich 스타일을 따르면 Rails 스타일과 거의 동일하게 보입니다.