|
|||
|
|
아래 소스는 노래 제목을 이용하여 노래목록에서 해당 노래를 찾는 메소드를 가지고 있는 클래스이다.
일반적인 형태를 띤 배열을 for문으로 돌면서 내용을 검사하는 로직이다. class SongList
def search_song(title)
for i in 0...@songs.length
return @songs[i] if title == @songs[i].name
end
return nil
end
end
위 로직은 배열의 크기를 알아야 하고, 원하는 값을 찾을 때까지 계속 배열의 값을 가져와야 한다. 이보다는 배열이 직접 원소로부터 원하는 것을 찾도록 하는 것은 어떨까? Array 객체의 find메소드가 이런 일을 한다.class SongList
def search_song(title)
@songs.find {|song| title == song.name}
end
endfind 메소드가 바로 코드 블럭을 반복해서 수행하는 반복자이다. 반복자와 코드블럭은 루비가 가진 매우 흥미로운 특징 중 하나이다. 코드블럭은 메소드 호출 바로 뒤에서 { .. } 로 감싸져 있는 부분이다. 위 소스에서 {|song| title == song.name} 부분에 해당된다. 1. 반복자 구현하기※ 위 내용은 데이브토머스 차드파울러 앤디헌트 지음, 강문식, 박지인, 양석호 옮김 『Programming Ruby』 책의 내용을 바탕으로 정리한 것입니다. |
||
최근 댓글