블록은 클로저 혹은 익명함수와 비슷합니다.
즉 이름 없는 메서드를 생성하는 방법이라고 할 수 있으며
do...end 혹은 {} 로 정의합니다.
블록은 처리를 하나의 단위로 묶은 것으로
메서드 호출 시 한번만 지정할 수 있는 인자의 일종입니다.
이런 메서드 호출을 블록 메서드 호출이라고 합니다.
메서드 호출시 block의 표현식은 호출된 메서드의 yield로 전달됩니다.
즉, 메서드 내부에 yield가 있을 경우
메서드 호출시 block을 공급해야 합니다.
메소드에 블록이 부여되었는지 판단하기 위해 block_given? 메서드를 사용합니다.