2011년 6월 2일 목요일

Implementing Iterators

Implementing Iterators

루비의 반복자(Iterator)는 코드 블록을 실행시켜주는 메서드이다. 루비 블록의 표현식은 다음과 같다.
- 소스 코드에서 블록은 메서드 호출 바로 뒤에만 나타난다.
- 블록 안의 코드는 나타나자마자 실행되지 않는다. 대신 루비가 그 블록이 나타날 때의 문맥을 기억하고 메서드로 들어간다.

메서드 안에서 yield문을 사용해서 블록을 마치 자신이 또는 다른 메서드 인 것처럼 사용한다.

def threeTimes
 yield
 yield
 yield
end
threeTimes { puts "Hello" }
>> Hello
>> Hello
>> Hello

위에서 블록은 threeTimes 메서드 호출과 결합되어있다.

블록은 메서드의 결과 값을 받을 수도 있습니다.

def f(a)
   yield a+1
end

f(1) {|n| puts n}

>> 2

함수 f는 인자 a를 받고 yield a+1에서 주어진 블록으로 결과 값을 리턴한다. 블록에서는 선언된 변수 n으로 이 결과 값을 받아서 puts n으로 화면에 출력한다.

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...