2013-09-27 3 views
3

필자는 Array 클래스가 이미 Enumerable 모듈에서 혼합되어 있음을 이해합니다. 그 때문에 만약Array가 Enumerable 일 때 Array # to_enum을 사용해야하는 이유는 무엇입니까?

, 왜이 [:example].next하지?

이유는 [:example].to_enum.next해야합니까?

+1

메소드'next'는'Enumerator' 클래스가 아니라'Array' 클래스에 정의되어 있기 때문입니다. Array는 처음에 Enumerator와의 대화를 가능하게하는 Enumerable에 혼합되어 있습니다. –

+0

[이]과 동일 (http://stackoverflow.com/questions/2863044/what-is-the-advantage-of-creating-an-enumerable-object-using-to-enum-in-ruby)? –

답변

3

Enumerable moduleEnumerator class 상이하기 때문이다.

는 "Enumerable에서를"있는 것은 클래스가 "열거 자"를 만들 공짜 방법의 무리를 얻을 수 있다는 것을 의미한다. Java의 IterableIterator 인터페이스와 비교하십시오.

+0

Enumerable, Enumerator, 나는 그것을 간과했다! 이제는 모든 것이 합리적입니다. 고맙습니다. –

7

to_enumEnumerable과 아무 관련이 없으며 Enumerator을 반환합니다. nextEnumerator 방법이 아닌 Enumerable 방법이기 때문에 Arraynext 방법이 없습니다.

+0

감사합니다. Enumerable과 Enumerator의 차이점을 알지 못했습니다! –

+2

@JanDvorak'to_enum'은'Object'의 메소드입니다. – Stefan

+0

@Stefan uhh ... 와우. http://ruby-doc.org/core-1.9.3/Object.html#method-i-to_enum –

관련 문제