ruby
블록
Dexlee
2021. 12. 26. 23:04
1. 블록이란?
- 블록은 중괄호 {} 나 do와 end 키워드로 둘러싸인 코드 덩어리다.
- 일반적으로 한 줄에 블록을 작성할 수 있다면 중괄호를 사용하고
- 그렇지 않으면 do와 end 키워드를 사용
- 블록은 익명 메서드의 본문과 비슷한 무언가라고 생각해도 무방
2. 블록 사용 방법
ids = [1,2,3,4,5]
sheets = []
ids.each_slice(3) { |idxs| sheets += Sheet.where(id: idxs) }
or
ids.each_slice(3) do |idxs|
sheets += Sheet.where(id: idxs)
end
이렇게 두 가지 방식으로 쓸 수 있다.
each_slice() 함수의 로직을 확인해보면,
def each_slice(n)
block_given? ? (yield to_a; nil) : [to_a].to_enum
end
여기서 주의 깊게 보아야 할 예약어가 yield이다. 이 yield문을 한 번 호출할 때마다 블록에 있는 람다식을 실행시켜주는 역할을 한다.
그리고 만약에 블록이 존재하지 않는다면 리스트를 리턴해준다.
위에 코드를 설명해보면, 총 2개의 서브리스트 [1,2,3] , [4,5]가 람다식의 파라미터로 갈 것이고, 각 호출마다 yield문이 호출되어 람다식을 실행시킬 것이다.